Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.19 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 Wikibooks:Administratorzy 4 13 556428 551166 2026-09-15T01:18:16Z Persino 2851 556428 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysops, system operators i admins}}}}, z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania MediaWiki. == Lista administratorów polskich Wikibooks == Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}. # {{lż|Pavroo}} # {{lż|Persino}} # {{lż|Igor123121}} === Byli administratorzy === # {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 --> # {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 --> # {{lż|Karol Karolus}} # {{lż|Kj}} # {{lż|Lethern}} # {{lż|Mellonedain}} # {{lż|MonteChristof}} # {{lż|Panterka}} # {{lż|Piotr}} # {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 --> # {{lż|Sp5uhe}} # {{lż|Warszk}} (biurokrata) # {{lż|Wojciech Pędzich}} == Zobacz też == * {{lr|Administratorzy interfejsu}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> ih3ad3ui4qcsczc9u6qcj9f0dwzosin 556431 556428 2026-09-15T01:21:26Z Persino 2851 556431 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysops, system operators i admins}}}}, z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania {{NS|k=mw|l=tak}}. == Lista administratorów polskich Wikibooks == Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}. # {{lż|Pavroo}} # {{lż|Persino}} # {{lż|Igor123121}} === Byli administratorzy === # {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 --> # {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 --> # {{lż|Karol Karolus}} # {{lż|Kj}} # {{lż|Lethern}} # {{lż|Mellonedain}} # {{lż|MonteChristof}} # {{lż|Panterka}} # {{lż|Piotr}} # {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 --> # {{lż|Sp5uhe}} # {{lż|Warszk}} (biurokrata) # {{lż|Wojciech Pędzich}} == Zobacz też == * {{lr|Administratorzy interfejsu}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> ls9rdpt64pntgzny3kcc8munwgb0k6t 556432 556431 2026-09-15T01:30:26Z Persino 2851 556432 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysop}}}}, z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania {{NS|k=mw|l=tak}}. == Lista administratorów polskich Wikibooks == Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}. # {{lż|Pavroo}} # {{lż|Persino}} # {{lż|Igor123121}} === Byli administratorzy === # {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 --> # {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 --> # {{lż|Karol Karolus}} # {{lż|Kj}} # {{lż|Lethern}} # {{lż|Mellonedain}} # {{lż|MonteChristof}} # {{lż|Panterka}} # {{lż|Piotr}} # {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 --> # {{lż|Sp5uhe}} # {{lż|Warszk}} (biurokrata) # {{lż|Wojciech Pędzich}} == Zobacz też == * {{lr|Administratorzy interfejsu}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> i56e2tbc9fvf7aaxba4ho1od1s00zdq 556433 556432 2026-09-15T01:32:12Z Persino 2851 556433 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysop}}}} (Zobacz też: {{lc2|Grupy użytkowników}}), z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania {{NS|k=mw|l=tak}}. == Lista administratorów polskich Wikibooks == Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}. # {{lż|Pavroo}} # {{lż|Persino}} # {{lż|Igor123121}} === Byli administratorzy === # {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 --> # {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 --> # {{lż|Karol Karolus}} # {{lż|Kj}} # {{lż|Lethern}} # {{lż|Mellonedain}} # {{lż|MonteChristof}} # {{lż|Panterka}} # {{lż|Piotr}} # {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 --> # {{lż|Sp5uhe}} # {{lż|Warszk}} (biurokrata) # {{lż|Wojciech Pędzich}} == Zobacz też == * {{lr|Administratorzy interfejsu}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> lbqcd8e662qcf0kixerug7zdnkr78pt 556436 556433 2026-09-15T01:36:46Z Persino 2851 /* Zobacz też */ 556436 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysop}}}} (Zobacz też: {{lc2|Grupy użytkowników}}), z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania {{NS|k=mw|l=tak}}. == Lista administratorów polskich Wikibooks == Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}. # {{lż|Pavroo}} # {{lż|Persino}} # {{lż|Igor123121}} === Byli administratorzy === # {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 --> # {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 --> # {{lż|Karol Karolus}} # {{lż|Kj}} # {{lż|Lethern}} # {{lż|Mellonedain}} # {{lż|MonteChristof}} # {{lż|Panterka}} # {{lż|Piotr}} # {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 --> # {{lż|Sp5uhe}} # {{lż|Warszk}} (biurokrata) # {{lż|Wojciech Pędzich}} == Zobacz też == {{Wikibooks:Administratorzy/Zobacz też}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> dfxikle1thvwqixkdhkvu4dnugeivtb Kategoria:Kategorie podręcznikowe 14 1740 556455 552244 2026-09-15T02:45:32Z Persino 2851 556455 wikitext text/x-wiki {{Opis kategorii | grupuje = Grupuje strony i kategorie podręcznikowe na polskim {{NS|pk=mj|l=tak|w=tak}}. Jest to główna kategoria dotycząca podręczników. | uwagi = Korzystając z linków poniżej możesz dotrzeć do dowolnego miejsca, dotyczącej podręczników, w drzewie tej kategorii naszego serwisu. | liczba stron = | osobne grupują = | główne strony = | portal = | wikiprojekt = | zobacz = | szablony = | zgłaszające = | linkujące = | związane = | zobacz opisy = | dokumentacje = | opis stron = | przykłady = | dalsze pozycje = | zmiany = | nawigacja = {{Autonawigacja|Pomoc:Spis treści}} | siostrzane = }} {{Kategoria|Kategorie}} n33783augq7s28qe269ksk25ktwfdw5 Szablon:Układ autonawigacji 10 5342 556457 501307 2026-09-15T02:55:52Z Persino 2851 556457 wikitext text/x-wiki <includeonly><!-- -->{{#if:{{#invoke:Parametry|Not|{{{automat manualny|}}}}}<!-- -->|{{ConfDomyślna | klucz = {{{krok}}} | wyjście = {{ConfDomyślna | klucz = {{{krok}}} | wyjście = | spis treści = {{Jeśli niepuste|{{#if:{{{spis treści|}}}|{{#invoke:Techniczne|PrzeszkałćAdresWzględnyStronyNaBezwzględny | 1 = {{{spis treści}}} | 2 = {{#invoke:Ramka|Szablon|Nazwa=AktualnaKsiążka|parametry funkcji modułu pudełek=tak}} | wyspecjalizowana = tak }} }}|{{#invoke:Ramka|Szablon|Nazwa=AktualnaKsiążka|parametry funkcji modułu pudełek=tak}} }} }} | poprz = {{#invoke:Ramka|Szablon|Nazwa=LinkPoprzedniArtykuł|parametry funkcji modułu pudełek=tak}} | nast = {{#invoke:Ramka|Szablon|Nazwa=LinkNastępnyArtykuł|parametry funkcji modułu pudełek=tak}} }}<!-- -->|{{#invoke:Ramka|Rozwiń|{{((}}ConfDomyślna{{!}}klucz{{=}}{{(((}}krok{{)))}}:{{((}}FULLPAGENAME{{))}}{{!}} wyjście{{=}}{{((}}ConfDomyślna{{!}}klucz{{=}}{{(((}}krok{{)))}}{{!}}wyjście{{=}}{{!}}spis treści{{=}}{{(((}}spis treści{{)))}}{{))}}{{!}} {{#invoke:Ramka|PowtarzajOdDo | start = 1 | koniec = {{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu}} | krok = 2 | nie rozwiń = tak | 1 = poprz:{{((}}#if:tak{{!}}{{(((}}{{((}}_{{))}}{{)))}}{{))}}{{=}}{{((}}#ifeq:{{((}}_{{))}}{{!}}{{((}}start{{))}}{{!}}{{!}}{{!((}}:{{((}}#if:tak{{!}}{{(((}} {{((}}#expr:{{((}}_{{))}}-2{{))}}{{)))}}{{))}}{{!}}{{((}}Jeśli niepuste{{!}}{{(((}} {{((}}#expr:{{((}}_{{))}}-1{{))}}{{)))}}{{!}}{{((}}Zastąp{{!}}ciąg{{=}}{{(((}} {{((}}#expr:{{((}}_{{))}}-2{{))}}{{)))}}{{!}}wzór{{=}}^([^/]*/){{!}}zamień{{=}}{{))}}{{))}}{{))!}}{{))}}{{!}} nast:{{((}}#if:tak{{!}}{{(((}}{{((}}_{{))}}{{)))}}{{))}}{{=}}{{((}}#ifeq:{{((}}_{{))}}{{!}}{{((}}#expr:{{((}}koniec{{))}}-1{{))}}{{!}}{{!}}{{!((}}:{{((}}#if:tak{{!}}{{(((}} {{((}}#expr:{{((}}_{{))}}+2{{))}}{{)))}}{{))}}{{!}}{{((}}Jeśli niepuste{{!}}{{(((}} {{((}}#expr:{{((}}_{{))}}+3{{))}}{{)))}}{{!}}{{((}}Zastąp{{!}}ciąg{{=}}{{(((}} {{((}}#expr:{{((}}_{{))}}+2{{))}}{{)))}}{{!}}wzór{{=}}^([^/]*/){{!}}zamień{{=}}{{))}}{{))}}{{))!}}{{))}}{{!}} }} {{))}}}}}}</includeonly><noinclude>{{Dokumentacja|Szablon:Autonawigacja/opis}}</noinclude> 5cly55l1x0dzxi8tc6wgh5wh3jzp5d6 Wikibooks:Biurokraci 4 22610 556439 519762 2026-09-15T01:38:27Z Persino 2851 /* Zobacz też */ 556439 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Biurokraci}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Obecnie nie mamy żadnych aktywnych biurokratów. Uprawnienia biurokraty na wszystkich projektach posiadają {{lr|Stewardzi|stewardzi}}. Jeżeli potrzebujesz czegoś wymagającego uprawnień biurokraty, postępuj zgodnie z instrukcjami na stronie o stewardach.''' '''Biurokrata''' to użytkownik Wikibooks mający możliwość '''nadawania uprawnień''' {{lr|Administratorzy|administratora}}, biurokraty i {{lr|Boty|bota}} innym użytkownikom. Nie ma on możliwości odbierania uprawnień administratora i biurokraty – to leży w gestii {{lr|Stewardzi|stewardów}}; ma taką możliwość jedynie w stosunku do botów. Biurokraci korzystają z tych uprawnień za zgodą społeczności, w oparciu o wynik głosowania na stronie {{lr|Przyznawanie uprawnień}} i w zgodzie z regulaminem na niej przedstawionym. '''W chwili obecnej aby otrzymać status biurokraty przez stewarda, wymagane jest 20 głosów za.''' Należy pamiętać, że, podobnie jak status {{lr|Administratorzy|administratora}}, funkcja biurokraty jest czysto administracyjna i nie daje żadnych dodatkowych uprawnień, jeśli chodzi o zawartość merytoryczną projektu. == Biurokraci polskich Wikibooks == ''brak'' Zawsze aktualna lista: {{lc|Użytkownicy/bureaucrat|użytkownicy w grupie Biurokrata}} === Lista byłych biurokratów === # {{lż|Derbeth}} ({{Span|klasa=plainlinks|{{lz|s=Specjalna:Rejestr|c=logid=3591|n=6 września 2006}}}} – {{Span|klasa=plainlinks|{{lz|s=Specjalna:Log|c=logid=22789688|n=16 lipca 2017}}}}) # {{lż|Reytan}} ({{Span|klasa=plainlinks|{{lz|s=Specjalna:Log|c=logid=1056|n=3 listopada 2005}}}} – {{Span|klasa=plainlinks|{{lz|s=Specjalna:Log|c=logid=9209344|n=25 lipca 2014}}}}) # {{lż|Warszk}} ({{Span|klasa=plainlinks|{{lz|s=Specjalna:Rejestr|c=logid=2599|n=16 czerwca 2006}}}} – {{Span|klasa=plainlinks|{{lz|s=Specjalna:Log|c=logid=60988|n=8 stycznia 2007}}}}) == Zobacz też == {{Wikibooks:Administratorzy/Zobacz też}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> 7offmzckbceztg3daw5kiqocbmflm70 Wikibooks:Stewardzi 4 22620 556440 552160 2026-09-15T01:38:54Z Persino 2851 /* Zobacz też */ 556440 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Stewardzi}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Steward''' to osoba posiadająca dostęp do wszelkich narzędzi, we wszystkich projektach {{lpg|Wikimedia Foundation|Fundacji Wikimedia}}. Do głównych zadań stewardów należy realizowane woli społeczności danego projektu (np. nadanie uprawnienia administratora wskazanemu użytkownikowi), działanie w nagłych wypadkach oraz interweniowanie w przypadkach wieloprojektowych wandalizmów. Stewardzi mają m.in. możliwość: * nadawania i odbierania użytkownikom uprawnień np. {{lr|Administratorzy|administratora}} lub {{lr|Biurokraci|biurokraty}} w dowolnym projekcie Wikimedia * nadawania (po uprzednim spełnieniu wymogu weryfikacji w Fundacji Wikimedia) i odbierania uprawnień {{lmr|CheckUser|CheckUsera}} i Oversighta * zarządzania {{lpp|Konto uniwersalne|kontami globalnymi}} (blokowanie, ukrywanie, wyłączanie, nadawanie globalnego uprawnienia) * sprawdzania adresu IP dowolnego użytkownika * interweniowania za pomocą uprawnienia Oversight Do zgłaszania próśb o przyznanie lub odebranie uprawnień służy strona {{lmg|Steward requests/Permissions}} na {{NS|l=tak|k=m}}. Zmiany uprawnień dokonywane przez stewardów widoczne są w {{lmc|Log/rights|rejestrze na Meta}}. Stewardzi są wybierani przez ogół społeczności wszystkich projektów Wikimedia. Istnieje szereg wytycznych, według których powinni postępować stewardzi, zawartych na stronie {{lmg|Steward policies|Steward policies}} na {{NS|l=tak|k=m}}. M.in. Stewardzi powinni unikać konfliktu interesów, np. nadawania/odbierania szczególnych uprawnień w projektach, z których sami się wywodzą (nie dotyczy oczywistych sytuacji, takich jak odebranie samemu sobie uprawnień lub awaryjnego pozbawienia uprawnień określonego konta). Pełna lista stewardów znajduje się na stronie '''{{lmg|Stewards}} na Meta. == Zobacz też == {{Wikibooks:Administratorzy/Zobacz też}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> 1ot20di5yush34asg3d9menva47zvip Wikibooks:Bar/Archiwum 4 23999 556460 539152 2026-09-15T03:15:08Z Persino 2851 556460 wikitext text/x-wiki {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!-- -->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar}}<!-- -->}}<!-- -->{{Tabela nawigacyjna | styl = width:100%;margin-left:0;margin-right:0; | funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}} | tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}}) | spis = {{sr}} — {{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) — {{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) — {{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) — {{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) — {{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) — {{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) — {{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) — {{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) — {{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) - {{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) - {{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) - {{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) - {{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) - {{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) - {{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) - {{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) - {{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) - {{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) - {{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) - {{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) - {{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) - {{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) - {{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025) }}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}} omnscuwuxwuma5zotl5c0vjhefw7zw1 556466 556460 2026-09-15T03:34:36Z Persino 2851 556466 wikitext text/x-wiki {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!-- -->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar}}<!-- -->}}<!-- -->{{Tabela nawigacyjna | styl = width:100%;margin-left:0;margin-right:0;box-sizing:border-box; | funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}} | tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}}) | spis = {{sr}} — {{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) — {{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) — {{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) — {{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) — {{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) — {{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) — {{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) — {{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) — {{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) - {{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) - {{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) - {{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) - {{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) - {{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) - {{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) - {{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) - {{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) - {{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) - {{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) - {{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) - {{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) - {{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) - {{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025) }}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}} esa6t891n83gaxxvgcdfr1pydga97pk 556469 556466 2026-09-15T03:38:02Z Persino 2851 556469 wikitext text/x-wiki {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!-- -->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar}}<!-- -->}}<!-- -->{{Tabela nawigacyjna | klasa = width:100%;margin-left:0;margin-right:0;box-sizing:border-box; | funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}} | tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}}) | spis = {{sr}} — {{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) — {{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) — {{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) — {{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) — {{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) — {{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) — {{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) — {{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) — {{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) - {{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) - {{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) - {{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) - {{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) - {{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) - {{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) - {{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) - {{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) - {{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) - {{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) - {{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) - {{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) - {{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) - {{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025) }}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}} b22u00jg5t3sxa2swvfypryt8dnotr6 556470 556469 2026-09-15T03:38:32Z Persino 2851 556470 wikitext text/x-wiki {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!-- -->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar}}<!-- -->}}<!-- -->{{Tabela nawigacyjna | klasa = szerokość | funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}} | tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}}) | spis = {{sr}} — {{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) — {{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) — {{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) — {{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) — {{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) — {{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) — {{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) — {{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) — {{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) - {{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) - {{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) - {{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) - {{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) - {{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) - {{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) - {{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) - {{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) - {{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) - {{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) - {{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) - {{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) - {{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) - {{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025) }}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}} jmu1p90x72nzxht2nhrjc30bakgupny 556535 556470 2026-09-15T09:31:57Z Persino 2851 556535 wikitext text/x-wiki {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!-- -->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar}}<!-- -->}}<!-- -->{{Tabela nawigacyjna | klasa = szerokość | funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}} | tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}}) | spis = {{sr}} — {{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) — {{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) — {{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) — {{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) — {{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) — {{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) — {{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) — {{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) — {{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) - {{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) - {{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) - {{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) - {{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) - {{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) - {{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) - {{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) - {{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) - {{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) - {{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) - {{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) - {{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) - {{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) - {{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025) {{SpanClear}} }}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}} su6pjsiuaqaokkxa4vianmwho4y3vsc 556536 556535 2026-09-15T09:33:29Z Persino 2851 556536 wikitext text/x-wiki {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!-- -->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar}}<!-- -->}}<!-- -->{{Tabela nawigacyjna | klasa = szerokość | funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}} | tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}}) | spis = {{Span|{{sr}} — {{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) — {{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) — {{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) — {{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) — {{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) — {{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) — {{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) — {{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) — {{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) - {{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) - {{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) - {{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) - {{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) - {{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) - {{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) - {{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) - {{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) - {{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) - {{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) - {{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) - {{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) - {{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) - {{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025) }} }}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}} 09r0u8tyqojuttmcze6ud4rka5yaehn 556540 556536 2026-09-15T09:40:20Z Persino 2851 556540 wikitext text/x-wiki {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!-- -->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Bar}}<!-- -->}}<!-- -->{{Tabela nawigacyjna | klasa = szerokość | funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}} | tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}}) | spis = {{P| {{sr}} — {{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) — {{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) — {{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) — {{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) — {{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) — {{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) — {{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) — {{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) — {{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) - {{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) - {{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) - {{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) - {{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) - {{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) - {{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) - {{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) - {{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) - {{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) - {{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) - {{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) - {{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) - {{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) - {{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025) }} }}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}} 8q8vqaxoqjy1gzockqain23mpcfk64x Szablon:Opis kategorii 10 24591 556453 551155 2026-09-15T02:41:03Z Persino 2851 556453 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=Opis kategorii/start | czy kategorie dla kategorii = {{#invoke:Kategorie|CzyKategoriaDlaKategorii}} | wiki-commons = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=commons}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=commons}} }} | wiki-wikt = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=wikt}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=wikt}} }} | wiki-s = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=s}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=s}} }} | wiki-q = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=q}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=q}} }} | wiki-n = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=n}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=n}} }} | wiki-w = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=w}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=w}} }} | wiki-b = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=en|kod projektu=b}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=en|kod projektu=b}} }} | wiki-voy = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=voy}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=voy}} }} | wiki-species = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=en|kod projektu=wikispecies}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=en|kod projektu=wikispecies}} }} | wiki-wikiwerek = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=en|kod projektu=wikiversity}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=en|kod projektu=wikiversity}} }} | wiki-meta = {{Jeśli niepuste |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=meta}} |{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=meta}} }} | wiki-dane = {{Jeśli niepuste |{{#invoke:Wikidane|id|{{#invoke:Pudełko|Pełna nazwa jednostki}}|idwiki=plwikibooks}} |{{#invoke:Wikidane|id|{{#invoke:Pudełko|Pełna nazwa jednostki}}|idwiki=plwiki}} }} | specjalne = {{#switch:{{#invoke:Pudełko|Pełna nazwa jednostki}}|{{ns:Category}}:Kategorie|{{Ns:Category}}:Metastrony Wikibooks|{{Ns:Category}}:Kategorie dla kategorii=tak}} }}<!-- -->{{#if:{{{bez kategorii|}}}||<!-- -->{{Kategoria|Strony kategorii używające szablonu Opis kategorii do opisu}}<!-- -->}}<!-- -->{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Sprawdź|Parametry|=problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s do sprawdzenia{{))}} | grupuje = ! | uwagi = ! | liczba stron = ! | osobne grupują = ! | główne strony = ! | portal = ! | wikiprojekt = ! | zobacz = ! | szablony = ! | zgłaszające = ! | linkujące = ! | związane = ! | zobacz opisy = ! | dokumentacje = ! | opis stron = ! | przykłady = ! | dalsze pozycje = ! | zmiany = ! | nawigacja = | siostrzane = ! | bez ramki = | bez nagłówka = | ze stopką = | bez kolumn = | liczba kolumn = | minimalna szerokość kolumn = | minimalna główna szerokość = | bez czcionki = | nazwa kategorii = | kod języka bazy = | kod projektu bazy = }}}}</includeonly><noinclude>{{Dokumentacja}}{{Kategoria|Strony kategorii używające szablonu Opis kategorii do opisu|sortuj spacją=tak}}</noinclude> eah2dl09fcieyuqh0iz9l1svuyv5gux Moduł:Cytuj 828 31187 556502 515370 2026-09-15T06:52:07Z Persino 2851 556502 Scribunto text/plain local resources = mw.loadData("Moduł:Cytuj/dane") local access = mw.loadData("Moduł:Cytuj/dostęp") local function createCategories() local result = {} local mt = { __index = function(t,k) return resources.categories[k] or resources.categories.check end, __newindex = function(t,k,v) error("Kategorie są tylko do odczytu") end, } setmetatable(result, mt) return result end local categories = createCategories() local function killLinkInterwiki(value) -- usuń z treści wikilinki generowane przez szablon link-interwiki -- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia" local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "") return result end local function softNoWiki(text) local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = "&#x22;", ["'"] = "&#x27;", ["["] = "&#x5B;", ["]"] = "&#x5D;", ["{"] = "&#x7B;", ["|"] = "&#x7C;", ["}"] = "&#x7D;"}) -- przywróc [[szablon:J]] z kursywą tak/nie result, count = string.gsub(result, "<span +style=&#x22;font%-style: ?([a-z]+);?&#x22; +lang=&#x22;([a-z%-]+)&#x22; *>", "<span style=\"font-style: %1;\" lang=\"%2\">") -- przywróc [[szablon:J]] goły result, count = string.gsub(result, "<span +lang=&#x22;([a-z%-]+)&#x22; *>", "<span lang=\"%1\">") -- przywróć nowiki result, count = string.gsub(result, "\127&#x27;&#x22;`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`&#x22;&#x27;\127", "\127'\"`UNIQ--%1-QINU`\"'\127") return result end local function escapeUrl(url) local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"}) return result end local function plainText(text) local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "") return result end local function first(data) return type(data) == "table" and data[1] or data end local function determineMode(p) local detector = {} local count = 0 for i, v in ipairs(resources.modes) do detector[i] = v count = count + 1 end detector[1] = false -- skip 'auto' count = count - 1 for k, v in pairs(resources.params) do local arg = p.args[v.name] for i, w in ipairs(v.used) do if not w and arg then -- unexpected argument if detector[i] then detector[i] = false count = count - 1 if count == 0 then -- the mode cannot be determined break end end end end if count == 0 then -- the mode cannot be determined break end end if count == 1 then for i, v in ipairs(detector) do if detector[i] then return i, resources.COinS[i] end end end if detector[4] -- web? and p.args[resources.params.url.name] then -- promote to web but without COinS return 4, false end for i, v in ipairs(detector) do if detector[i] then -- if type is determined more than once -- use only the first one without COinS return i, false end end -- in case nothing is selected -- use the auto mode as default fallback return 1 end local authorMetatable = {} local authorMethodtable = {} authorMetatable.__index = authorMethodtable local function checkPatterns(author, prefixes, suffixes) if author.exact then return false end if author.prefix and prefixes then for _, v in ipairs(prefixes) do if mw.ustring.match(author.prefix, v) then return true end end end if author.suffix and suffixes then for _, v in ipairs(suffixes) do if mw.ustring.match(author.suffix, v) then return true end end end return false end authorMethodtable.format = function(data, namefirst) if data.exact then return data.exact end if namefirst and data.familynamefirst then namefirst = false end local builder = mw.html.create() local name = data.name and (#data.name > 0) local initials = data.nameinitials and (#data.nameinitials > 0) local namehint = nil if name and initials and (data.name ~= data.nameinitials) then namehint = data.name end if not data.familynamefirst and (name or initials) then local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before") if name then before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end before:wikitext("&nbsp;") end builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname)) if not namefirst and (name or initials) then local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after") after:wikitext("&nbsp;") if name then after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end if data.js then after:wikitext(",") end end if data.js then builder:wikitext("&nbsp;", data.js) end return tostring(builder) end authorMethodtable.towiki = function(data) if data.exact then return data.exact end local result = {} local name = data.name and (#data.name > 0) if not data.familynamefirst and name then table.insert(result,softNoWiki(data.name)) table.insert(result, " ") end table.insert(result, softNoWiki(data.lastname)) if data.familynamefirst and name then table.insert(result, " ") table.insert(result, softNoWiki(data.name)) end return table.concat(result) end local function makeInitials(name) local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h') nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C' nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje return mw.text.trim(nameinitials) end local function fixInitials(name) local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku return result end local function isInQuotes(text) if (string.len(text) < 2) then return false; end local tstart = text:sub(1, 1); if (tstart ~= '"') then return false; end local tend = text:sub(-1); if (tend ~= '"') then return false; end return true; end local function parseAuthor(author) local result = {} if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane result.exact = author setmetatable(result, authorMetatable) return result end local author = mw.text.trim(author) local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", }) if a ~= author then result.exact = a setmetatable(result, authorMetatable) return result end if resources.exactAuthors[author] then result.exact = author setmetatable(result, authorMetatable) return result end local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$") if exactName then result.exact = mw.text.trim(exactName) if #result.exact == 0 then return nil end setmetatable(result, authorMetatable) return result end local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$") if prefix0 then result.link = link author = description else prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$") if prefix0 then author = link result.link = link else prefix0 = "" suffix0 = "" end end local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$") if not prefix1 then rest = author prefix1 = "" end local prefix = mw.text.trim(prefix0.." "..prefix1) if #prefix > 0 then if mw.ustring.sub(prefix, -1) == "#" then result.familynamefirst = true prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$")) end if #prefix > 0 then result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces end end local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$") if not suffix then rest2 = rest suffix = "" end suffix = mw.text.trim(suffix.." "..suffix0) if #suffix > 0 then result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces suffix = " "..result.suffix for i, v in ipairs(resources.js) do if mw.ustring.match(suffix, v[1]) then result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], "")) result.js = v[2] break end end else for i, v in ipairs(resources.js) do if mw.ustring.match(rest2, v[1]) then rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], "")) result.js = v[2] break end end end local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$") if not lastname then if result.familynamefirst then lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$") else local prefix2 name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$") if not resources.lastnamePrefixes[prefix2] then name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$") end end elseif resources.lastnamePrefixes[prefix1] then lastname = prefix1 .. lastname elseif resources.lastnamePrefixes[prefix1] == false then name = name.." "..mw.text.trim(prefix1) end if not lastname then result.lastname = mw.text.trim(rest2) else result.name = fixInitials(name) result.lastname = lastname result.nameinitials = makeInitials(name) end if #result.lastname == 0 then return nil end setmetatable(result, authorMetatable) return result end local function parseDate(date, month, year, patch) local result = {} -- parse full date local y, m, d = false, false, false y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)") if y and patch and (date == (y.."-01-01")) then result.year = tonumber(y) result.month = false result.day = false return result, true end if not y then d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)") if not y then y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)") if not y then d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false d = false end end end end if y then y = tonumber(y) m = tonumber(m) d = tonumber(d) end if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then y = false m = false d = false elseif y then result.year = y result.month = m result.day = d return result, false end -- parse year and month y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)") if not y then m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)") if not y then y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)") if not y then m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false end end end end if y then y = tonumber(y) m = tonumber(m) end if y and ((m > 12) or (m < 1)) then y = false m = false elseif y then result.year = y result.month = m return result, false end -- try any method to extract year or month if not y then y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?") if y then y = tonumber(y) end if y then result.year = y end end if y then if not m then m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?") if m then m = resources.monthparser[mw.ustring.lower(m)] end if m then result.month = m end end else -- reset only month result.month = nil end if y then return result, false end end local function collectAuthors(author, checkForAltFormat) if not author then return end -- Obsługa cudzysłowów w autorach (treat quoted authors as-is) if (isInQuotes(mw.text.trim(author))) then local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ') return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" } end function findUtf8CharAt(text, at) local back = false if at < 0 then at = #text + at + 1 back = true end while at > 1 do local b = string.byte(text, at, at) if (b < 128) or (b >= 192) then break end at = at - 1 end return back and at - #text - 1 or at end local etal = false local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50)) for i, p in ipairs(resources.etalPatterns) do local a, e = string.match(authorTail, p) if a then author = string.sub(author, 1, #author-#e) etal = e break end end function decodeEntity(s) local result = nil local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$") if hex then result = mw.ustring.char(tonumber(hex, 16)) else local dec = string.match(s, "^&#([0-9]+);$") if dec then result = mw.ustring.char(tonumber(dec, 10)) elseif resources.htmlEntities[s] then result = mw.ustring.char(resources.htmlEntities[s]) else return string.gsub(s, ";", "\\:") end end if result == ";" then return "\\:" elseif result == "," then return "\\." elseif result == "\\" then return "\\\\" else return result end end local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1) local result = {} local esc1 = string.gsub(authorHead, "\\", "\\\\") local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity) local splitter = string.match(esc2, ";") and ";" or "," local authors = mw.text.split(esc2, splitter.."%s*", false) local nth = false local count = #authors if (#authorHead < #author) and (count > 4) then if count > 5 then table.remove(authors, count) count = count - 1 end local at, _ = string.find(authorHead, authors[count], 1, true) nth = string.sub(author, at) table.remove(authors, count) count = count - 1 end local alt = false if (splitter == ",") and checkForAltFormat then local altAuthors = {} alt = true for i, v in ipairs(authors) do local n0 = "" local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$") if not s then s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$") end if not s then n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc. end if not s then alt = false break end local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.") if #n0 > 0 then n0 = " "..n0 end table.insert(altAuthors, s..", "..initials..n0) end if alt then authors = altAuthors splitter = ";" end end for i, v in ipairs(authors) do local author = parseAuthor(v) if author then table.insert(result, author) end end if #result == 0 then return end local check = false if alt then check = "alt" elseif (#result == 2) and (splitter == ",") then check = not result[1].link and not result[1].exact and not result[1].name or not result[2].link and not result[2].exact and not result[2].name if check then if result[1].lastname and not result[1].name and not result[2].exact and not mw.ustring.match(result[1].lastname, "%S%s+%S") then local oneAuthor = parseAuthor(author) if oneAuthor then table.remove(result,2) result[1] = oneAuthor check = false end end end if check then mw.logObject(result,"przecinek u autora") end end return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " } end local function formatAuthors(authors, useDecorations, nextgroup, etalForm) local count = #authors.items if count == 0 then return nil, false end local suffix = function(author) if useDecorations then for _, v in ipairs(resources.authorFunc) do if checkPatterns(author, v.prefixes, v.suffixes) then return v.append end end end return "" end local formatter = function(author) local a = author:format(nextgroup) local r = author.link and ("[["..author.link.."|"..a.."]]") or a return r..suffix(author) end if count == 1 then local a1 = formatter(authors.items[1]) local etal = authors.etal and (etalForm or " i inni") or "" return a1..etal, false end local result = {} table.insert(result, formatter(authors.items[1])) if not authors.etal and (count <= 3) then table.insert(result, ", "); table.insert(result, formatter(authors.items[2])) if count == 3 then table.insert(result, ", "); table.insert(result, formatter(authors.items[3])) end return table.concat(result, ""), false end local title = {} for i = 1, count do table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i])) end if authors.more then table.insert(title, authors.more) end table.insert(result, "<span class=\"cite-at-al\" title=\"") table.insert(result, table.concat(title, authors.separator)) if authors.etal then table.insert(result, etalForm or " i inni") end table.insert(result, "\">") table.insert(result, etalForm or " i inni") table.insert(result, "</span>") return table.concat(result, ""), true end local function collectLanguages(value) if value then local result = {} local values = mw.text.split(value, "%s+") for _, v in ipairs(values) do if #v > 0 then table.insert(result, v) end end if #result > 0 then return result end end return nil end local function splitFileLink(link) local linkTitle = string.match(link, "^:(.+)$") if not linkTitle then return link, false end local title = mw.title.new(link) if not title then return link, false end mw.logObject(title.text, "splitFileLink - title.text") if title.namespace == 6 then local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$") if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end elseif #title.interwiki > 0 then local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$") if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end end return link, false end local function splitWikiLink(text) local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$") if link then local name, ext = splitFileLink(link) return description, link, false, ext end local link = mw.ustring.match(text, "^%[%[(.-)%]%]$") if link then local name, ext = splitFileLink(link) return name or link, link, false, ext end local strony_modul=require("Module:Strony"); local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$") if link and strony_modul.SprawdzanieURL(link) then return description, false, link, false end return text, false, false, false end local function detectArchive(url) local uri = mw.uri.new(url) local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]] if detectors then --mw.logObject(uri.host,"detectArchive uri.host") --mw.logObject(uri.relativePath,"detectArchive uri.relativePath") --mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service") for i, v in ipairs(detectors) do local pattern = v.pattern local decoder = resources.archiveDecoders.decoders[v.decoder] if pattern and decoder then local items = { mw.ustring.match(uri.relativePath, pattern) } if #items > 0 then --mw.logObject(items[decoder.link],"detectArchive link") --mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date") return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day] end end end end return false, false end local function isAutoGeneratedUrl(url) local address = string.gsub(url, "^https?:", "") for k, v in pairs(resources.params) do if v.link then local links = type(v.link) == "table" and v.link or { v.link } for _, vlink in ipairs(links) do local prefix = string.gsub(vlink, "^https?:", "") if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then return v.name end end end end return false end local function loadCitation(frame, mode) local result = {} -- map parameters based on: Moduł:Cytuj/dane for k, v in pairs(resources.params) do if v.used[mode] then local value = frame.args[v.name] if value then value = mw.text.trim(value) if #value > 0 then result[k] = value end end if (v.used[mode] == "!") and not result[k] then -- simulate missing mandatory parameter result[k] = "{{{"..v.name.."}}}" if not result.missing then result.missing = v.name end end end end -- check url argument if result.url == "nie" then result.url = false elseif result.url then local strony_modul=require("Module:Strony"); if not strony_modul.SprawdzanieURL(result.url) then local unstrip = mw.text.unstripNoWiki( result.url ) result.url = false if unstrip then result.urlnowiki = strony_modul.SprawdzanieURL(unstrip) end end end -- translate some parameters local altAuthorParser = false if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then altAuthorParser = true end result.chapterauthor = collectAuthors(result.chapterauthor, false) result.author = collectAuthors(result.author, altAuthorParser) result.lang = collectLanguages(result.lang) result.editor = collectAuthors(result.editor, false) result.others = collectAuthors(result.others, false) -- parse main bibliographic date if result.date then local bibDate = false local bibDateHint = false local coinsDate = false local odnDate = false for _, v in ipairs(resources.bibDates) do for _, p in ipairs(v.patterns) do local bib, c = mw.ustring.gsub(result.date, p, v.show) if bib and (c > 0) then bibDate = bib bibDateHint = v.hint if v.coins then local cd, cc = mw.ustring.gsub(result.date, p, v.coins) if cd and (cc > 0) then coinsDate = cd end end if v.odn then local od, oc = mw.ustring.gsub(result.date, p, v.odn) if od and (oc > 0) then odnDate = od end end break end if bibDate then break end end end if bibDate then result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate } else local date, patch = parseDate(result.date or "", false, false, true) if date then date.coins = (patch and date.year) or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day)) or (date.month and string.format("%04d-%02d", date.year, date.month)) or date.year date.odn = date.year elseif result.date then result.badDate = true end result.date = date result.patchCitoidDate = patch end end -- fix other dates if result.accessdate then result.accessdate = parseDate(result.accessdate or "", false, false, false) if result.accessdate and not result.accessdate.day then result.badAccessDate = true result.accessdate = nil elseif not result.accessdate then result.badAccessDate = true end end -- allow more ISBN numbers if result.isbn then -- TODO allow "(info)" for custom description followed each identifier result.isbn = mw.text.split(result.isbn, "%s+") end if result.title then local url result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title) if url or result.titlelink then if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then result.urlWarning = true end result.url = url end end if result.chapter then result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter) end if result.journal then local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ") mw.logObject(journalAbbr, "journalAbbr") if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)] if expandedJournal then result.originalJournal = result.journal result.journal = expandedJournal end end result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal) end if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then result.journalurl = result.url result.url = false end if result.url then local n = isAutoGeneratedUrl(result.url) if n then result.rejectedurl = true if result[n] then result.url = false end end end if result.chapterurl then local n = isAutoGeneratedUrl(result.chapterurl) if n then result.rejectedurl = true if result[n] then result.chapterurl = false end end end if result.journalurl then local n = isAutoGeneratedUrl(result.journalurl) if n then result.rejectedurl = true if result[n] then result.journalurl = false end end end if not result.archive and result.url then local al, ad = detectArchive(result.url) if al then result.archiveurl = true result.archive = result.url result.url = al if ad then result.archived = ad end end elseif not result.archive and result.chapterurl then local al, ad = detectArchive(result.chapterurl) if al then result.archivechapter = true result.archive = result.chapterurl result.chapterurl = al if ad then result.archived = ad end end elseif not result.archive and result.journalurl then local al, ad = detectArchive(result.journalurl) if al then result.archivejournal = true result.archive = result.journalurl result.journalurl = al if ad then result.archived = ad end end elseif result.archive and not result.archived then local al, ad = detectArchive(result.archive) if ad and not result.archived then result.archived = ad end end if result.archive then if result.chapterurl and not result.url then result.archivechapter = true elseif result.title then result.archiveurl = true elseif result.journal then result.archivejournal = true end end if result.archived then result.archived = parseDate(result.archived or "", false, false, false) if result.archived and not result.archived.day then result.badArchivedDate = true result.archived = null elseif not result.archived then result.badArchivedDate = true end end if result.edition and result.journal and not result.volume and not result.issue then local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$"); if volume then result.volume = volume result.issue = issue result.edition = nil end end if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc) end if result.accessKind then result.accessKind = access.choice[result.accessKind] result.unknownAccess = not result.accessKind else result.accessKind = (result.pmc and "open") or access.doi[doiPrefix] or access.journals[result.journal] end if result.doi then result.doi = mw.text.split(result.doi, '%s+', false) for i, v in ipairs(result.doi) do local doiPrefix local doiSuffix doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$") if (doiPrefix == "2307") and not result.jstor then result.jstor = doiSuffix end if not result.accessKind and not result.unknownAccess then result.accessKind = access.doi[doiPrefix] end end end if result.patent then mw.logObject(result.patent,"input:patent") local patentPatterns = mw.loadData("Moduł:Cytuj/patent") local patent = nil local strony_modul=require("Module:Strony"); for _, v in ipairs(patentPatterns) do if string.match(result.patent, v.pattern) then local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1") local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country) local patentInfo = v.info or patentPatterns.ccinfo[patentCountry] if (result.url == nil) and v.url then local url, _ = string.gsub(result.patent, v.pattern, v.url) if strony_modul.SprawdzanieURL(url) then result.url = url end end local patentTitle if v.title then patentTitle, _ = string.gsub(result.patent, v.pattern, v.title) elseif patentInfo then patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber) else patentTitle = patentCountry.." "..patentNumber end patent = { number = patentNumber, application = v.application, country = patentCountry, title = patentTitle, } break end end result.patent = patent mw.logObject(result.patent,"parsed:patent") end -- return collected parameters if there is any for k, v in pairs(result) do return result end -- there are no supported parameters return nil end local function prepareOdnIdentifier(data) if not data.odn or (#data.odn == 0) or (data.odn == "nie") then return nil end data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false if data.odn ~= "tak" and not data.diferentiator then -- TODO return only CITEREF... return data.odn end local authors = data.chapterauthor or data.author or data.editor if not authors then -- required custom identifier return nil end return "CITEREF" .. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "") .. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "") .. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "") .. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "") .. (data.date and data.date.odn or "") .. (data.diferentiator or "") end local function bookCOinS(data) local authors = data.chapterauthor or data.author local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book" if data.chapter and (#data.chapter > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.chapter) result["rft.btitle"] = plainText(data.title) elseif data.work and (#data.work > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.title) result["rft.btitle"] = plainText(data.work) else result["rft.btitle"] = plainText(data.title) result["rft.gengre"] = "book" end if authors then if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.series then result["rft.series"] = data.series end if data.edition then result["rft.edition"] = data.edition end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.isbn then result["rft.isbn"] = data.isbn[1] end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end local coinsData = table.concat(params, "&") return coinsData; end local function journalCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article" result["rft.gengre"] = data.title and gengre or "journal" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.journal) if data.chapter then result["rft.atitle"] = plainText(data.chapter) end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end if data.volume then result["rft.volume"] = data.volume end if data.issue then result["rft.edition"] = data.issue end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function webCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" result["rft.gengre"] = "unknown" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.published) if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function patentCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" if data.title then result["rft.title"] = plainText(data.title) end result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number result["rft.cc"] = data.patent.country if data.date and data.date.coins then result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins end if author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end -- rft.assignee = author (wszyscy?) -- rft.inventor = others (wszyscy?) local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function COinS(data, coinsFormat) if resources.abbrTitles[data.title] then -- full citation is elsewhere return false elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then -- title is mandatory element for books return bookCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then -- journal title is mandatory element for journals return journalCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then return webCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then return patentCOinS(data) elseif data.title and (#data.title > 0) then -- treat web or unrecognized citations as book return bookCOinS(data) else return false end end --[[ Format edition (number or marc 250$a). Different for journal. Tests: Wikipedysta:Nux/test Cytuj wydanie --]] local function formatEdition(edition, journal) local prefix = false if not journal then prefix = true if string.find(edition, "[Ww]yd[a. ]") then prefix = false elseif string.find(edition, "[Ee]dition") then prefix = false end end return (prefix and "wyd. " or "") .. edition end --[[ Main. --]] local function Cite(p, mode, appendText, firewall) -- typ jednostki 2 --local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame; local types; local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}} local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2) if(typ_jednostki=="artykuł")then types="(artykuły)"; elseif(typ_jednostki=="artykuł dla dzieci")then types="(artykuły dla dzieci)"; elseif(typ_jednostki=="strona użytkownika")then types="(strony użytkowników)"; elseif(typ_jednostki=="strona brudnopisu projektu")then types="(strony brudnopisu projektu)"; else types="(strony niepodręcznikowe)"; end; -- debug helper if p.args[3] then mw.log(p.args[3]) end local customMode = mode -- try to determine type basing on passed parameters local coinsFormat = resources.COinS[mode] if not mode then mode, coinsFormat = determineMode(p) end local data = loadCitation(p, mode) if not data then local result = mw.html.create("span") :addClass("problemy") :attr("aria-hidden", "true") :attr("data-nosnippet", "") :attr("data-problemy", "Brak wyników w szablonie cytowania") if mw.title.getCurrentTitle().namespace == 0 then result:wikitext(string.format(categories.empty,types)) end result:wikitext("&#8201;") -- thin space return tostring(result) end -- convert web page to book for old date if (mode == 4) and data.date and data.date.odn then local year = tonumber(data.date.odn) if year and (year < 1990) then mode = 2 end end if data.missing then -- do not produce any COiNS info -- if some mandatory argument is missing coinsFormat = false end local builder = mw.html.create("cite") builder :addClass("citation") :addClass(resources.cite[mode] or nil) :addClass(access.class[data.accessKind]) :attr("id", prepareOdnIdentifier(data)) --:wikitext(access.render[data.accessKind], ' ') local needDot = false local nextAuthorGroup = false if data.title or data.patent then if data.chapter then local authors = data.editor and data.author or data.chapterauthor if authors then local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil) builder:wikitext(list, ", ") nextAuthorGroup = true end local title = softNoWiki(data.chapter) if data.urlstatus == "ukryj" then if data.archivechapter and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.chapterurl then builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']") elseif data.chapterlink then builder:wikitext("[[", data.chapterlink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") end builder:wikitext(", [w:] ") end local authors = false local editor = false if not data.chapter and data.author then authors = data.author else authors = data.editor or data.author editor = data.editor end if authors then local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil) builder:wikitext(list) nextAuthorGroup = true if editor and not etal and not authors.etal then builder:wikitext(" (red.)") end builder:wikitext(", ") end if customMode and data.authorextra then builder:wikitext(data.authorextra, ", ") end if resources.abbrTitles[data.title] then local title = resources.abbrTitles[data.title] builder:wikitext(title) needDot = not mw.ustring.match(title, "%.%]%]$") and not mw.ustring.match(title, "%.$") elseif data.title then local title = softNoWiki(data.title) if data.urlstatus == "ukryj" then if data.archiveurl and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.url or data.archiveurl then builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']") elseif data.titlelink then builder:wikitext("[[", data.titlelink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if not data.chapter and data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") needDot = true elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then needDot = true end local showmediatype = data.mediatype and (#data.mediatype > 0) if showmediatype then builder:wikitext(" &#x5B;", data.mediatype, "&#x5D;") needDot = true end end if not editor and data.editor then local list, etal = formatAuthors(data.editor, false, true, " i inni red.") builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)") needDot = true end if data.others then local list, etal = formatAuthors(data.others, true, true, nil) builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list) needDot = true end if data.patent then local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title) needDot = true end elseif data.journal and data.author then local list, etal = formatAuthors(data.author, false, false, nil) builder:wikitext(list, ", ") end if data.work then builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work) needDot = true end -- web -> [online] if (mode == 4) and not data.mediatype then builder:wikitext(" [online]") end if data.journal and (not data.published or (data.journal ~= data.published)) then builder:wikitext((data.title or data.work) and ", " or "") local title = softNoWiki(data.journal) if data.urlstatus == "ukryj" then if data.archivejournal and data.archive then builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]") else builder:wikitext("„", title, "”") end elseif data.journalurl or data.archivejournal then builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]") elseif data.journallink then builder:wikitext("„[[", data.journallink, "|", title, "]]”") else builder:wikitext("„", title, "”") end needDot = true end if data.responsibility then builder:wikitext(", ", data.responsibility) needDot = true end if data.edition then builder:wikitext(", ", formatEdition(data.edition, data.journal)) needDot = true end if data.volume then builder:wikitext(data.journal and ", " or ", t. ", data.volume) needDot = true end if data.journal and data.issue then builder:wikitext(" (", data.issue, ")") needDot = true end if data.description and (#data.description > 0) then builder:wikitext(", ", data.description) needDot = true end if data.published and not data.publisher then builder:wikitext(", ", data.published) needDot = true end local place = false if data.place then builder:wikitext(", ", data.place) needDot = true place = true end if data.publisher then builder:wikitext(place and ": " or ", ", data.publisher) needDot = true place = false end if data.date then local shortDate = data.journal and (data.doi or data.pmid or data.pmc) if data.date.bib and data.date.hint then builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib) elseif data.date.bib then builder:wikitext(place and " " or ", ", data.date.bib) elseif data.date.day and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.month and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.day then builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year)) elseif data.date.month then builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year)) else builder:wikitext(place and " " or ", ", data.date.year) end builder:wikitext(data.diferentiator or "") needDot = true end if not data.journal and (data.series or data.issue) then builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")") needDot = true elseif data.journal and data.series then builder:wikitext(" (", data.series, ")") needDot = true end if data.p and #data.p > 0 then local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]") builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p) needDot = true end if data.doi then local separator = "&nbsp;" builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:") local doiLink = first(resources.params.doi.link) for _, v in ipairs(data.doi) do builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]") separator = ", " end needDot = true end if data.isbn then for i,v in ipairs(data.isbn) do builder:wikitext(", ") require("Moduł:ISBN").link(builder, v) end needDot = true end if data.lccn then builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]") needDot = true end if data.issn then builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]") needDot = true end if data.pmid then builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]:&nbsp;[", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]") needDot = true end if data.pmc then builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]:&nbsp;[", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]") needDot = true end if data.bibcode then builder:wikitext(", [[w:Bibcode|Bibcode]]:&nbsp;[", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]") needDot = true end if data.oclc then builder:wikitext(", [[w:Online Computer Library Center|OCLC]]&nbsp;[", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]") needDot = true end if data.arxiv then builder:wikitext(", [[arXiv]]:") local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$") if eprint then builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] &#x5B;[//arxiv.org/archive/", class, " ", class, "]&#x5D;" ) else builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" ) end needDot = true end if data.jstor then builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]:&nbsp;[", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]") needDot = true end if data.ol then builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]:&nbsp;[", first(resources.params.ol.link), data.ol, " ", data.ol, "]") needDot = true end if data.id then builder:wikitext(", ", data.id) needDot = true end if data.accessdate then builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]") needDot = true end if data.archive then builder:wikitext(" [zarchiwizowane") if data.urlstatus ~= "ukryj" then local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl) if url then builder:wikitext(" z [", escapeUrl(url), " adresu]") end end if data.archived and data.archived.day then builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day)) end builder:wikitext("]") needDot = true end if data.quotation then builder:wikitext(", Cytat: ", data.quotation) needDot = true end local coinsData = COinS(data, coinsFormat) if coinsData then builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext("&nbsp;") end if data.lang then local languages = require("Moduł:Lang").lang({args = data.lang}) builder:wikitext(" ", languages) needDot = true end if data.fullStop then if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then builder:wikitext(", ") end builder:wikitext(data.fullStop) needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil end if needDot then builder:wikitext(".") end if appendText then builder:wikitext(string.format(appendText,types)) end -- categories local addCategories = mw.title.getCurrentTitle().namespace == 0 local problems = {} if not customMode and (mode == 1) then builder:wikitext(string.format(categories.undetermined,types)) table.insert(problems, "???") end if data.publisher and data.published then table.insert(problems, "p?") if addCategories then table.insert(problems, string.format(categories.unusedPublished,types)) end end if data.journal and data.published and (data.journal == data.published) then table.insert(problems, "j?") if addCategories then table.insert(problems, string.fomat(categories.sameJournalAndPublished,types)) end end if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then builder:addClass(data.urlnowiki and "urlnowiki" or "nourl") end local missing = false local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*") if data.missing then -- usually missing title, this is the first check for mandatory arguments table.insert(problems, data.missing) missing = true elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then -- build in support for missing external link for page citation table.insert(problems, resources.params.url.name) missing = true else -- any other missing value (first catch) for k, v in pairs(resources.params) do if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then table.insert(problems, v.name) missing = true break end end end if missing and addCategories then builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode])) end if (data.chapterauthor and data.chapterauthor.comma) or (data.author and (data.author.comma == true)) or (data.editor and data.editor.comma) or (data.others and data.others.comma) then table.insert(problems, "!!!") if addCategories then builder:wikitext(string.format(categories.suspectedComma,types)) end end if data.author and (data.author.comma == "alt") then table.insert(problems, "a?") if addCategories then builder:wikitext(string.format(categories.altAuthor,types)) end end if data.originalJournal then builder:addClass("c") -- CSS dla lokalizacji w treści if addCategories then builder:wikitext(string.format(categories.altJournal,types)) end end local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia")); local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks")); if citewikipedia or citewikibooks then local justification = false local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {} for i, v in ipairs(acceptedLinks) do justification = (v == data.url) or (v == data.archive) if justification then break end end if not justification then table.insert(problems, "wiki?") if addCategories then if(citewikipedia)then builder:wikitext(string.format(categories.wikipedia,types)) end; if(citewikibooks)then builder:wikitext(string.format(categories.wikibooks,types)) end; end end end if data.unknownAccess then table.insert(problems, "dostęp?") if addCategories then builder:wikitext(string.format(categories.unknownAccess,types)) end end if data.rejectedurl then table.insert(problems, "<s>url</s>") if addCategories then builder:wikitext(string.format(categories.rejectedUrl,types)) end end if data.urlWarning then table.insert(problems, "Url") if addCategories then builder:wikitext(string.format(categories.unusedUrl,types)) end end if data.patchCitoidDate then table.insert(problems, "1 stycznia") end if data.badDate then table.insert(problems, "data?") end if data.badAccessDate then table.insert(problems, "data dostępu?") end if data.badArchivedDate then table.insert(problems, "zarchiwizowano?") end if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then builder:wikitext(string.format(categories.badDate,types)) end if (data.author and data.author.etal) or (data.chapterauthor and data.chapterauthor.etal) or (data.editor and data.editor.etal) or (data.others and data.others.etal) then table.insert(problems, "i inni") if addCategories then builder:wikitext(string.format(categories.etal,types)) end end if firewall then local reportFirewall = function(report) if report then table.insert(problems, report.info) if addCategories and report.cat then local cat = mw.ustring.format(categories.firewall, types, report.cat) builder:wikitext(cat) end end end local reportCommonsFile = function(ext) mw.logObject(ext, "ext") if ext and (firewall.commonsFile[ext] ~= false) then local issue = firewall.commonsFile[ext] or firewall.commonsFile[true] reportFirewall(firewall.reports[issue]) end end if data.url and firewall.url[data.url] ~= false then local uri = mw.uri.new(data.url) local issue = firewall.url[data.url] or firewall.host[uri.host] or firewall.path[uri.relativePath] reportFirewall(firewall.reports[issue]) end reportCommonsFile(data.chapterext) reportCommonsFile(data.titleext) reportCommonsFile(data.journalext) end if #problems > 0 then local info = builder:tag("span") :addClass("problemy") :addClass("problemy-w-cytuj") :attr("aria-hidden", "true") :attr("data-nosnippet", "") info:wikitext(table.concat(problems,", ")) end return builder:done() end return { auto = function(frame) return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall")) end, custom = function(frame,pf) local traceCategory = false local pagename = mw.title.getCurrentTitle() if (pagename.namespace == 10) and frame.getParent then local template = mw.title.new( frame:getParent():getTitle(), "Szablon" ) if mw.title.compare(template, pagename) == 0 then traceCategory = categories.traceInvokeCustom end end local customMode = frame.args[1] local mode = 1 if customMode then customMode = mw.text.trim(customMode) for i, v in ipairs(resources.modes) do if customMode == v then mode = i break end end end return Cite(pf or frame, mode, traceCategory, null) end, custom2=function(frame) return custom(frame,frame:getParent()); end, } atvurmbumr5ijkr8zodkoaituoc1f79 556504 556502 2026-09-15T06:54:45Z Persino 2851 556504 Scribunto text/plain local resources = mw.loadData("Moduł:Cytuj/dane") local access = mw.loadData("Moduł:Cytuj/dostęp") local function createCategories() local result = {} local mt = { __index = function(t,k) return resources.categories[k] or resources.categories.check end, __newindex = function(t,k,v) error("Kategorie są tylko do odczytu") end, } setmetatable(result, mt) return result end local categories = createCategories() local function killLinkInterwiki(value) -- usuń z treści wikilinki generowane przez szablon link-interwiki -- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia" local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "") return result end local function softNoWiki(text) local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = "&#x22;", ["'"] = "&#x27;", ["["] = "&#x5B;", ["]"] = "&#x5D;", ["{"] = "&#x7B;", ["|"] = "&#x7C;", ["}"] = "&#x7D;"}) -- przywróc [[szablon:J]] z kursywą tak/nie result, count = string.gsub(result, "<span +style=&#x22;font%-style: ?([a-z]+);?&#x22; +lang=&#x22;([a-z%-]+)&#x22; *>", "<span style=\"font-style: %1;\" lang=\"%2\">") -- przywróc [[szablon:J]] goły result, count = string.gsub(result, "<span +lang=&#x22;([a-z%-]+)&#x22; *>", "<span lang=\"%1\">") -- przywróć nowiki result, count = string.gsub(result, "\127&#x27;&#x22;`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`&#x22;&#x27;\127", "\127'\"`UNIQ--%1-QINU`\"'\127") return result end local function escapeUrl(url) local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"}) return result end local function plainText(text) local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "") return result end local function first(data) return type(data) == "table" and data[1] or data end local function determineMode(p) local detector = {} local count = 0 for i, v in ipairs(resources.modes) do detector[i] = v count = count + 1 end detector[1] = false -- skip 'auto' count = count - 1 for k, v in pairs(resources.params) do local arg = p.args[v.name] for i, w in ipairs(v.used) do if not w and arg then -- unexpected argument if detector[i] then detector[i] = false count = count - 1 if count == 0 then -- the mode cannot be determined break end end end end if count == 0 then -- the mode cannot be determined break end end if count == 1 then for i, v in ipairs(detector) do if detector[i] then return i, resources.COinS[i] end end end if detector[4] -- web? and p.args[resources.params.url.name] then -- promote to web but without COinS return 4, false end for i, v in ipairs(detector) do if detector[i] then -- if type is determined more than once -- use only the first one without COinS return i, false end end -- in case nothing is selected -- use the auto mode as default fallback return 1 end local authorMetatable = {} local authorMethodtable = {} authorMetatable.__index = authorMethodtable local function checkPatterns(author, prefixes, suffixes) if author.exact then return false end if author.prefix and prefixes then for _, v in ipairs(prefixes) do if mw.ustring.match(author.prefix, v) then return true end end end if author.suffix and suffixes then for _, v in ipairs(suffixes) do if mw.ustring.match(author.suffix, v) then return true end end end return false end authorMethodtable.format = function(data, namefirst) if data.exact then return data.exact end if namefirst and data.familynamefirst then namefirst = false end local builder = mw.html.create() local name = data.name and (#data.name > 0) local initials = data.nameinitials and (#data.nameinitials > 0) local namehint = nil if name and initials and (data.name ~= data.nameinitials) then namehint = data.name end if not data.familynamefirst and (name or initials) then local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before") if name then before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end before:wikitext("&nbsp;") end builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname)) if not namefirst and (name or initials) then local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after") after:wikitext("&nbsp;") if name then after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end if data.js then after:wikitext(",") end end if data.js then builder:wikitext("&nbsp;", data.js) end return tostring(builder) end authorMethodtable.towiki = function(data) if data.exact then return data.exact end local result = {} local name = data.name and (#data.name > 0) if not data.familynamefirst and name then table.insert(result,softNoWiki(data.name)) table.insert(result, " ") end table.insert(result, softNoWiki(data.lastname)) if data.familynamefirst and name then table.insert(result, " ") table.insert(result, softNoWiki(data.name)) end return table.concat(result) end local function makeInitials(name) local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h') nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C' nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje return mw.text.trim(nameinitials) end local function fixInitials(name) local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku return result end local function isInQuotes(text) if (string.len(text) < 2) then return false; end local tstart = text:sub(1, 1); if (tstart ~= '"') then return false; end local tend = text:sub(-1); if (tend ~= '"') then return false; end return true; end local function parseAuthor(author) local result = {} if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane result.exact = author setmetatable(result, authorMetatable) return result end local author = mw.text.trim(author) local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", }) if a ~= author then result.exact = a setmetatable(result, authorMetatable) return result end if resources.exactAuthors[author] then result.exact = author setmetatable(result, authorMetatable) return result end local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$") if exactName then result.exact = mw.text.trim(exactName) if #result.exact == 0 then return nil end setmetatable(result, authorMetatable) return result end local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$") if prefix0 then result.link = link author = description else prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$") if prefix0 then author = link result.link = link else prefix0 = "" suffix0 = "" end end local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$") if not prefix1 then rest = author prefix1 = "" end local prefix = mw.text.trim(prefix0.." "..prefix1) if #prefix > 0 then if mw.ustring.sub(prefix, -1) == "#" then result.familynamefirst = true prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$")) end if #prefix > 0 then result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces end end local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$") if not suffix then rest2 = rest suffix = "" end suffix = mw.text.trim(suffix.." "..suffix0) if #suffix > 0 then result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces suffix = " "..result.suffix for i, v in ipairs(resources.js) do if mw.ustring.match(suffix, v[1]) then result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], "")) result.js = v[2] break end end else for i, v in ipairs(resources.js) do if mw.ustring.match(rest2, v[1]) then rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], "")) result.js = v[2] break end end end local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$") if not lastname then if result.familynamefirst then lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$") else local prefix2 name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$") if not resources.lastnamePrefixes[prefix2] then name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$") end end elseif resources.lastnamePrefixes[prefix1] then lastname = prefix1 .. lastname elseif resources.lastnamePrefixes[prefix1] == false then name = name.." "..mw.text.trim(prefix1) end if not lastname then result.lastname = mw.text.trim(rest2) else result.name = fixInitials(name) result.lastname = lastname result.nameinitials = makeInitials(name) end if #result.lastname == 0 then return nil end setmetatable(result, authorMetatable) return result end local function parseDate(date, month, year, patch) local result = {} -- parse full date local y, m, d = false, false, false y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)") if y and patch and (date == (y.."-01-01")) then result.year = tonumber(y) result.month = false result.day = false return result, true end if not y then d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)") if not y then y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)") if not y then d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false d = false end end end end if y then y = tonumber(y) m = tonumber(m) d = tonumber(d) end if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then y = false m = false d = false elseif y then result.year = y result.month = m result.day = d return result, false end -- parse year and month y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)") if not y then m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)") if not y then y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)") if not y then m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false end end end end if y then y = tonumber(y) m = tonumber(m) end if y and ((m > 12) or (m < 1)) then y = false m = false elseif y then result.year = y result.month = m return result, false end -- try any method to extract year or month if not y then y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?") if y then y = tonumber(y) end if y then result.year = y end end if y then if not m then m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?") if m then m = resources.monthparser[mw.ustring.lower(m)] end if m then result.month = m end end else -- reset only month result.month = nil end if y then return result, false end end local function collectAuthors(author, checkForAltFormat) if not author then return end -- Obsługa cudzysłowów w autorach (treat quoted authors as-is) if (isInQuotes(mw.text.trim(author))) then local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ') return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" } end function findUtf8CharAt(text, at) local back = false if at < 0 then at = #text + at + 1 back = true end while at > 1 do local b = string.byte(text, at, at) if (b < 128) or (b >= 192) then break end at = at - 1 end return back and at - #text - 1 or at end local etal = false local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50)) for i, p in ipairs(resources.etalPatterns) do local a, e = string.match(authorTail, p) if a then author = string.sub(author, 1, #author-#e) etal = e break end end function decodeEntity(s) local result = nil local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$") if hex then result = mw.ustring.char(tonumber(hex, 16)) else local dec = string.match(s, "^&#([0-9]+);$") if dec then result = mw.ustring.char(tonumber(dec, 10)) elseif resources.htmlEntities[s] then result = mw.ustring.char(resources.htmlEntities[s]) else return string.gsub(s, ";", "\\:") end end if result == ";" then return "\\:" elseif result == "," then return "\\." elseif result == "\\" then return "\\\\" else return result end end local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1) local result = {} local esc1 = string.gsub(authorHead, "\\", "\\\\") local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity) local splitter = string.match(esc2, ";") and ";" or "," local authors = mw.text.split(esc2, splitter.."%s*", false) local nth = false local count = #authors if (#authorHead < #author) and (count > 4) then if count > 5 then table.remove(authors, count) count = count - 1 end local at, _ = string.find(authorHead, authors[count], 1, true) nth = string.sub(author, at) table.remove(authors, count) count = count - 1 end local alt = false if (splitter == ",") and checkForAltFormat then local altAuthors = {} alt = true for i, v in ipairs(authors) do local n0 = "" local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$") if not s then s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$") end if not s then n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc. end if not s then alt = false break end local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.") if #n0 > 0 then n0 = " "..n0 end table.insert(altAuthors, s..", "..initials..n0) end if alt then authors = altAuthors splitter = ";" end end for i, v in ipairs(authors) do local author = parseAuthor(v) if author then table.insert(result, author) end end if #result == 0 then return end local check = false if alt then check = "alt" elseif (#result == 2) and (splitter == ",") then check = not result[1].link and not result[1].exact and not result[1].name or not result[2].link and not result[2].exact and not result[2].name if check then if result[1].lastname and not result[1].name and not result[2].exact and not mw.ustring.match(result[1].lastname, "%S%s+%S") then local oneAuthor = parseAuthor(author) if oneAuthor then table.remove(result,2) result[1] = oneAuthor check = false end end end if check then mw.logObject(result,"przecinek u autora") end end return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " } end local function formatAuthors(authors, useDecorations, nextgroup, etalForm) local count = #authors.items if count == 0 then return nil, false end local suffix = function(author) if useDecorations then for _, v in ipairs(resources.authorFunc) do if checkPatterns(author, v.prefixes, v.suffixes) then return v.append end end end return "" end local formatter = function(author) local a = author:format(nextgroup) local r = author.link and ("[["..author.link.."|"..a.."]]") or a return r..suffix(author) end if count == 1 then local a1 = formatter(authors.items[1]) local etal = authors.etal and (etalForm or " i inni") or "" return a1..etal, false end local result = {} table.insert(result, formatter(authors.items[1])) if not authors.etal and (count <= 3) then table.insert(result, ", "); table.insert(result, formatter(authors.items[2])) if count == 3 then table.insert(result, ", "); table.insert(result, formatter(authors.items[3])) end return table.concat(result, ""), false end local title = {} for i = 1, count do table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i])) end if authors.more then table.insert(title, authors.more) end table.insert(result, "<span class=\"cite-at-al\" title=\"") table.insert(result, table.concat(title, authors.separator)) if authors.etal then table.insert(result, etalForm or " i inni") end table.insert(result, "\">") table.insert(result, etalForm or " i inni") table.insert(result, "</span>") return table.concat(result, ""), true end local function collectLanguages(value) if value then local result = {} local values = mw.text.split(value, "%s+") for _, v in ipairs(values) do if #v > 0 then table.insert(result, v) end end if #result > 0 then return result end end return nil end local function splitFileLink(link) local linkTitle = string.match(link, "^:(.+)$") if not linkTitle then return link, false end local title = mw.title.new(link) if not title then return link, false end mw.logObject(title.text, "splitFileLink - title.text") if title.namespace == 6 then local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$") if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end elseif #title.interwiki > 0 then local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$") if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end end return link, false end local function splitWikiLink(text) local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$") if link then local name, ext = splitFileLink(link) return description, link, false, ext end local link = mw.ustring.match(text, "^%[%[(.-)%]%]$") if link then local name, ext = splitFileLink(link) return name or link, link, false, ext end local strony_modul=require("Module:Strony"); local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$") if link and strony_modul.SprawdzanieURL(link) then return description, false, link, false end return text, false, false, false end local function detectArchive(url) local uri = mw.uri.new(url) local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]] if detectors then --mw.logObject(uri.host,"detectArchive uri.host") --mw.logObject(uri.relativePath,"detectArchive uri.relativePath") --mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service") for i, v in ipairs(detectors) do local pattern = v.pattern local decoder = resources.archiveDecoders.decoders[v.decoder] if pattern and decoder then local items = { mw.ustring.match(uri.relativePath, pattern) } if #items > 0 then --mw.logObject(items[decoder.link],"detectArchive link") --mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date") return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day] end end end end return false, false end local function isAutoGeneratedUrl(url) local address = string.gsub(url, "^https?:", "") for k, v in pairs(resources.params) do if v.link then local links = type(v.link) == "table" and v.link or { v.link } for _, vlink in ipairs(links) do local prefix = string.gsub(vlink, "^https?:", "") if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then return v.name end end end end return false end local function loadCitation(frame, mode) local result = {} -- map parameters based on: Moduł:Cytuj/dane for k, v in pairs(resources.params) do if v.used[mode] then local value = frame.args[v.name] if value then value = mw.text.trim(value) if #value > 0 then result[k] = value end end if (v.used[mode] == "!") and not result[k] then -- simulate missing mandatory parameter result[k] = "{{{"..v.name.."}}}" if not result.missing then result.missing = v.name end end end end -- check url argument if result.url == "nie" then result.url = false elseif result.url then local strony_modul=require("Module:Strony"); if not strony_modul.SprawdzanieURL(result.url) then local unstrip = mw.text.unstripNoWiki( result.url ) result.url = false if unstrip then result.urlnowiki = strony_modul.SprawdzanieURL(unstrip) end end end -- translate some parameters local altAuthorParser = false if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then altAuthorParser = true end result.chapterauthor = collectAuthors(result.chapterauthor, false) result.author = collectAuthors(result.author, altAuthorParser) result.lang = collectLanguages(result.lang) result.editor = collectAuthors(result.editor, false) result.others = collectAuthors(result.others, false) -- parse main bibliographic date if result.date then local bibDate = false local bibDateHint = false local coinsDate = false local odnDate = false for _, v in ipairs(resources.bibDates) do for _, p in ipairs(v.patterns) do local bib, c = mw.ustring.gsub(result.date, p, v.show) if bib and (c > 0) then bibDate = bib bibDateHint = v.hint if v.coins then local cd, cc = mw.ustring.gsub(result.date, p, v.coins) if cd and (cc > 0) then coinsDate = cd end end if v.odn then local od, oc = mw.ustring.gsub(result.date, p, v.odn) if od and (oc > 0) then odnDate = od end end break end if bibDate then break end end end if bibDate then result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate } else local date, patch = parseDate(result.date or "", false, false, true) if date then date.coins = (patch and date.year) or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day)) or (date.month and string.format("%04d-%02d", date.year, date.month)) or date.year date.odn = date.year elseif result.date then result.badDate = true end result.date = date result.patchCitoidDate = patch end end -- fix other dates if result.accessdate then result.accessdate = parseDate(result.accessdate or "", false, false, false) if result.accessdate and not result.accessdate.day then result.badAccessDate = true result.accessdate = nil elseif not result.accessdate then result.badAccessDate = true end end -- allow more ISBN numbers if result.isbn then -- TODO allow "(info)" for custom description followed each identifier result.isbn = mw.text.split(result.isbn, "%s+") end if result.title then local url result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title) if url or result.titlelink then if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then result.urlWarning = true end result.url = url end end if result.chapter then result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter) end if result.journal then local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ") mw.logObject(journalAbbr, "journalAbbr") if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)] if expandedJournal then result.originalJournal = result.journal result.journal = expandedJournal end end result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal) end if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then result.journalurl = result.url result.url = false end if result.url then local n = isAutoGeneratedUrl(result.url) if n then result.rejectedurl = true if result[n] then result.url = false end end end if result.chapterurl then local n = isAutoGeneratedUrl(result.chapterurl) if n then result.rejectedurl = true if result[n] then result.chapterurl = false end end end if result.journalurl then local n = isAutoGeneratedUrl(result.journalurl) if n then result.rejectedurl = true if result[n] then result.journalurl = false end end end if not result.archive and result.url then local al, ad = detectArchive(result.url) if al then result.archiveurl = true result.archive = result.url result.url = al if ad then result.archived = ad end end elseif not result.archive and result.chapterurl then local al, ad = detectArchive(result.chapterurl) if al then result.archivechapter = true result.archive = result.chapterurl result.chapterurl = al if ad then result.archived = ad end end elseif not result.archive and result.journalurl then local al, ad = detectArchive(result.journalurl) if al then result.archivejournal = true result.archive = result.journalurl result.journalurl = al if ad then result.archived = ad end end elseif result.archive and not result.archived then local al, ad = detectArchive(result.archive) if ad and not result.archived then result.archived = ad end end if result.archive then if result.chapterurl and not result.url then result.archivechapter = true elseif result.title then result.archiveurl = true elseif result.journal then result.archivejournal = true end end if result.archived then result.archived = parseDate(result.archived or "", false, false, false) if result.archived and not result.archived.day then result.badArchivedDate = true result.archived = null elseif not result.archived then result.badArchivedDate = true end end if result.edition and result.journal and not result.volume and not result.issue then local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$"); if volume then result.volume = volume result.issue = issue result.edition = nil end end if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc) end if result.accessKind then result.accessKind = access.choice[result.accessKind] result.unknownAccess = not result.accessKind else result.accessKind = (result.pmc and "open") or access.doi[doiPrefix] or access.journals[result.journal] end if result.doi then result.doi = mw.text.split(result.doi, '%s+', false) for i, v in ipairs(result.doi) do local doiPrefix local doiSuffix doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$") if (doiPrefix == "2307") and not result.jstor then result.jstor = doiSuffix end if not result.accessKind and not result.unknownAccess then result.accessKind = access.doi[doiPrefix] end end end if result.patent then mw.logObject(result.patent,"input:patent") local patentPatterns = mw.loadData("Moduł:Cytuj/patent") local patent = nil local strony_modul=require("Module:Strony"); for _, v in ipairs(patentPatterns) do if string.match(result.patent, v.pattern) then local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1") local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country) local patentInfo = v.info or patentPatterns.ccinfo[patentCountry] if (result.url == nil) and v.url then local url, _ = string.gsub(result.patent, v.pattern, v.url) if strony_modul.SprawdzanieURL(url) then result.url = url end end local patentTitle if v.title then patentTitle, _ = string.gsub(result.patent, v.pattern, v.title) elseif patentInfo then patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber) else patentTitle = patentCountry.." "..patentNumber end patent = { number = patentNumber, application = v.application, country = patentCountry, title = patentTitle, } break end end result.patent = patent mw.logObject(result.patent,"parsed:patent") end -- return collected parameters if there is any for k, v in pairs(result) do return result end -- there are no supported parameters return nil end local function prepareOdnIdentifier(data) if not data.odn or (#data.odn == 0) or (data.odn == "nie") then return nil end data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false if data.odn ~= "tak" and not data.diferentiator then -- TODO return only CITEREF... return data.odn end local authors = data.chapterauthor or data.author or data.editor if not authors then -- required custom identifier return nil end return "CITEREF" .. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "") .. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "") .. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "") .. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "") .. (data.date and data.date.odn or "") .. (data.diferentiator or "") end local function bookCOinS(data) local authors = data.chapterauthor or data.author local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book" if data.chapter and (#data.chapter > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.chapter) result["rft.btitle"] = plainText(data.title) elseif data.work and (#data.work > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.title) result["rft.btitle"] = plainText(data.work) else result["rft.btitle"] = plainText(data.title) result["rft.gengre"] = "book" end if authors then if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.series then result["rft.series"] = data.series end if data.edition then result["rft.edition"] = data.edition end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.isbn then result["rft.isbn"] = data.isbn[1] end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end local coinsData = table.concat(params, "&") return coinsData; end local function journalCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article" result["rft.gengre"] = data.title and gengre or "journal" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.journal) if data.chapter then result["rft.atitle"] = plainText(data.chapter) end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end if data.volume then result["rft.volume"] = data.volume end if data.issue then result["rft.edition"] = data.issue end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function webCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" result["rft.gengre"] = "unknown" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.published) if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function patentCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" if data.title then result["rft.title"] = plainText(data.title) end result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number result["rft.cc"] = data.patent.country if data.date and data.date.coins then result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins end if author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end -- rft.assignee = author (wszyscy?) -- rft.inventor = others (wszyscy?) local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function COinS(data, coinsFormat) if resources.abbrTitles[data.title] then -- full citation is elsewhere return false elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then -- title is mandatory element for books return bookCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then -- journal title is mandatory element for journals return journalCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then return webCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then return patentCOinS(data) elseif data.title and (#data.title > 0) then -- treat web or unrecognized citations as book return bookCOinS(data) else return false end end --[[ Format edition (number or marc 250$a). Different for journal. Tests: Wikipedysta:Nux/test Cytuj wydanie --]] local function formatEdition(edition, journal) local prefix = false if not journal then prefix = true if string.find(edition, "[Ww]yd[a. ]") then prefix = false elseif string.find(edition, "[Ee]dition") then prefix = false end end return (prefix and "wyd. " or "") .. edition end --[[ Main. --]] local function Cite(p, mode, appendText, firewall) -- typ jednostki 2 --local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame; local types; local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}} local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2) if(typ_jednostki=="artykuł")then types="(artykuły)"; elseif(typ_jednostki=="artykuł dla dzieci")then types="(artykuły dla dzieci)"; elseif(typ_jednostki=="strona użytkownika")then types="(strony użytkowników)"; elseif(typ_jednostki=="strona brudnopisu projektu")then types="(strony brudnopisu projektu)"; else types="(strony niepodręcznikowe)"; end; -- debug helper if p.args[3] then mw.log(p.args[3]) end local customMode = mode -- try to determine type basing on passed parameters local coinsFormat = resources.COinS[mode] if not mode then mode, coinsFormat = determineMode(p) end local data = loadCitation(p, mode) if not data then local result = mw.html.create("span") :addClass("problemy") :attr("aria-hidden", "true") :attr("data-nosnippet", "") :attr("data-problemy", "Brak wyników w szablonie cytowania") if mw.title.getCurrentTitle().namespace == 0 then result:wikitext(string.format(categories.empty,types)) end result:wikitext("&#8201;") -- thin space return tostring(result) end -- convert web page to book for old date if (mode == 4) and data.date and data.date.odn then local year = tonumber(data.date.odn) if year and (year < 1990) then mode = 2 end end if data.missing then -- do not produce any COiNS info -- if some mandatory argument is missing coinsFormat = false end local builder = mw.html.create("cite") builder :addClass("citation") :addClass(resources.cite[mode] or nil) :addClass(access.class[data.accessKind]) :attr("id", prepareOdnIdentifier(data)) --:wikitext(access.render[data.accessKind], ' ') local needDot = false local nextAuthorGroup = false if data.title or data.patent then if data.chapter then local authors = data.editor and data.author or data.chapterauthor if authors then local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil) builder:wikitext(list, ", ") nextAuthorGroup = true end local title = softNoWiki(data.chapter) if data.urlstatus == "ukryj" then if data.archivechapter and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.chapterurl then builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']") elseif data.chapterlink then builder:wikitext("[[", data.chapterlink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") end builder:wikitext(", [w:] ") end local authors = false local editor = false if not data.chapter and data.author then authors = data.author else authors = data.editor or data.author editor = data.editor end if authors then local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil) builder:wikitext(list) nextAuthorGroup = true if editor and not etal and not authors.etal then builder:wikitext(" (red.)") end builder:wikitext(", ") end if customMode and data.authorextra then builder:wikitext(data.authorextra, ", ") end if resources.abbrTitles[data.title] then local title = resources.abbrTitles[data.title] builder:wikitext(title) needDot = not mw.ustring.match(title, "%.%]%]$") and not mw.ustring.match(title, "%.$") elseif data.title then local title = softNoWiki(data.title) if data.urlstatus == "ukryj" then if data.archiveurl and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.url or data.archiveurl then builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']") elseif data.titlelink then builder:wikitext("[[", data.titlelink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if not data.chapter and data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") needDot = true elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then needDot = true end local showmediatype = data.mediatype and (#data.mediatype > 0) if showmediatype then builder:wikitext(" &#x5B;", data.mediatype, "&#x5D;") needDot = true end end if not editor and data.editor then local list, etal = formatAuthors(data.editor, false, true, " i inni red.") builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)") needDot = true end if data.others then local list, etal = formatAuthors(data.others, true, true, nil) builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list) needDot = true end if data.patent then local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title) needDot = true end elseif data.journal and data.author then local list, etal = formatAuthors(data.author, false, false, nil) builder:wikitext(list, ", ") end if data.work then builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work) needDot = true end -- web -> [online] if (mode == 4) and not data.mediatype then builder:wikitext(" [online]") end if data.journal and (not data.published or (data.journal ~= data.published)) then builder:wikitext((data.title or data.work) and ", " or "") local title = softNoWiki(data.journal) if data.urlstatus == "ukryj" then if data.archivejournal and data.archive then builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]") else builder:wikitext("„", title, "”") end elseif data.journalurl or data.archivejournal then builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]") elseif data.journallink then builder:wikitext("„[[", data.journallink, "|", title, "]]”") else builder:wikitext("„", title, "”") end needDot = true end if data.responsibility then builder:wikitext(", ", data.responsibility) needDot = true end if data.edition then builder:wikitext(", ", formatEdition(data.edition, data.journal)) needDot = true end if data.volume then builder:wikitext(data.journal and ", " or ", t. ", data.volume) needDot = true end if data.journal and data.issue then builder:wikitext(" (", data.issue, ")") needDot = true end if data.description and (#data.description > 0) then builder:wikitext(", ", data.description) needDot = true end if data.published and not data.publisher then builder:wikitext(", ", data.published) needDot = true end local place = false if data.place then builder:wikitext(", ", data.place) needDot = true place = true end if data.publisher then builder:wikitext(place and ": " or ", ", data.publisher) needDot = true place = false end if data.date then local shortDate = data.journal and (data.doi or data.pmid or data.pmc) if data.date.bib and data.date.hint then builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib) elseif data.date.bib then builder:wikitext(place and " " or ", ", data.date.bib) elseif data.date.day and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.month and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.day then builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year)) elseif data.date.month then builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year)) else builder:wikitext(place and " " or ", ", data.date.year) end builder:wikitext(data.diferentiator or "") needDot = true end if not data.journal and (data.series or data.issue) then builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")") needDot = true elseif data.journal and data.series then builder:wikitext(" (", data.series, ")") needDot = true end if data.p and #data.p > 0 then local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]") builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p) needDot = true end if data.doi then local separator = "&nbsp;" builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:") local doiLink = first(resources.params.doi.link) for _, v in ipairs(data.doi) do builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]") separator = ", " end needDot = true end if data.isbn then for i,v in ipairs(data.isbn) do builder:wikitext(", ") require("Moduł:ISBN").link(builder, v) end needDot = true end if data.lccn then builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]") needDot = true end if data.issn then builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]") needDot = true end if data.pmid then builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]:&nbsp;[", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]") needDot = true end if data.pmc then builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]:&nbsp;[", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]") needDot = true end if data.bibcode then builder:wikitext(", [[w:Bibcode|Bibcode]]:&nbsp;[", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]") needDot = true end if data.oclc then builder:wikitext(", [[w:Online Computer Library Center|OCLC]]&nbsp;[", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]") needDot = true end if data.arxiv then builder:wikitext(", [[arXiv]]:") local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$") if eprint then builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] &#x5B;[//arxiv.org/archive/", class, " ", class, "]&#x5D;" ) else builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" ) end needDot = true end if data.jstor then builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]:&nbsp;[", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]") needDot = true end if data.ol then builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]:&nbsp;[", first(resources.params.ol.link), data.ol, " ", data.ol, "]") needDot = true end if data.id then builder:wikitext(", ", data.id) needDot = true end if data.accessdate then builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]") needDot = true end if data.archive then builder:wikitext(" [zarchiwizowane") if data.urlstatus ~= "ukryj" then local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl) if url then builder:wikitext(" z [", escapeUrl(url), " adresu]") end end if data.archived and data.archived.day then builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day)) end builder:wikitext("]") needDot = true end if data.quotation then builder:wikitext(", Cytat: ", data.quotation) needDot = true end local coinsData = COinS(data, coinsFormat) if coinsData then builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext("&nbsp;") end if data.lang then local languages = require("Moduł:Lang").lang({args = data.lang}) builder:wikitext(" ", languages) needDot = true end if data.fullStop then if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then builder:wikitext(", ") end builder:wikitext(data.fullStop) needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil end if needDot then builder:wikitext(".") end if appendText then builder:wikitext(string.format(appendText,types)) end -- categories local addCategories = mw.title.getCurrentTitle().namespace == 0 local problems = {} if not customMode and (mode == 1) then builder:wikitext(string.format(categories.undetermined,types)) table.insert(problems, "???") end if data.publisher and data.published then table.insert(problems, "p?") if addCategories then table.insert(problems, string.format(categories.unusedPublished,types)) end end if data.journal and data.published and (data.journal == data.published) then table.insert(problems, "j?") if addCategories then table.insert(problems, string.fomat(categories.sameJournalAndPublished,types)) end end if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then builder:addClass(data.urlnowiki and "urlnowiki" or "nourl") end local missing = false local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*") if data.missing then -- usually missing title, this is the first check for mandatory arguments table.insert(problems, data.missing) missing = true elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then -- build in support for missing external link for page citation table.insert(problems, resources.params.url.name) missing = true else -- any other missing value (first catch) for k, v in pairs(resources.params) do if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then table.insert(problems, v.name) missing = true break end end end if missing and addCategories then builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode])) end if (data.chapterauthor and data.chapterauthor.comma) or (data.author and (data.author.comma == true)) or (data.editor and data.editor.comma) or (data.others and data.others.comma) then table.insert(problems, "!!!") if addCategories then builder:wikitext(string.format(categories.suspectedComma,types)) end end if data.author and (data.author.comma == "alt") then table.insert(problems, "a?") if addCategories then builder:wikitext(string.format(categories.altAuthor,types)) end end if data.originalJournal then builder:addClass("c") -- CSS dla lokalizacji w treści if addCategories then builder:wikitext(string.format(categories.altJournal,types)) end end local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia")); local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks")); if citewikipedia or citewikibooks then local justification = false local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {} for i, v in ipairs(acceptedLinks) do justification = (v == data.url) or (v == data.archive) if justification then break end end if not justification then table.insert(problems, "wiki?") if addCategories then if(citewikipedia)then builder:wikitext(string.format(categories.wikipedia,types)) end; if(citewikibooks)then builder:wikitext(string.format(categories.wikibooks,types)) end; end end end if data.unknownAccess then table.insert(problems, "dostęp?") if addCategories then builder:wikitext(string.format(categories.unknownAccess,types)) end end if data.rejectedurl then table.insert(problems, "<s>url</s>") if addCategories then builder:wikitext(string.format(categories.rejectedUrl,types)) end end if data.urlWarning then table.insert(problems, "Url") if addCategories then builder:wikitext(string.format(categories.unusedUrl,types)) end end if data.patchCitoidDate then table.insert(problems, "1 stycznia") end if data.badDate then table.insert(problems, "data?") end if data.badAccessDate then table.insert(problems, "data dostępu?") end if data.badArchivedDate then table.insert(problems, "zarchiwizowano?") end if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then builder:wikitext(string.format(categories.badDate,types)) end if (data.author and data.author.etal) or (data.chapterauthor and data.chapterauthor.etal) or (data.editor and data.editor.etal) or (data.others and data.others.etal) then table.insert(problems, "i inni") if addCategories then builder:wikitext(string.format(categories.etal,types)) end end if firewall then local reportFirewall = function(report) if report then table.insert(problems, report.info) if addCategories and report.cat then local cat = mw.ustring.format(categories.firewall, types, report.cat) builder:wikitext(cat) end end end local reportCommonsFile = function(ext) mw.logObject(ext, "ext") if ext and (firewall.commonsFile[ext] ~= false) then local issue = firewall.commonsFile[ext] or firewall.commonsFile[true] reportFirewall(firewall.reports[issue]) end end if data.url and firewall.url[data.url] ~= false then local uri = mw.uri.new(data.url) local issue = firewall.url[data.url] or firewall.host[uri.host] or firewall.path[uri.relativePath] reportFirewall(firewall.reports[issue]) end reportCommonsFile(data.chapterext) reportCommonsFile(data.titleext) reportCommonsFile(data.journalext) end if #problems > 0 then local info = builder:tag("span") :addClass("problemy") :addClass("problemy-w-cytuj") :attr("aria-hidden", "true") :attr("data-nosnippet", "") info:wikitext(table.concat(problems,", ")) end return builder:done() end local p={}; p.auto = function(frame) return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall")) end; p.custom = function(frame,pf) local traceCategory = false local pagename = mw.title.getCurrentTitle() if (pagename.namespace == 10) and frame.getParent then local template = mw.title.new( frame:getParent():getTitle(), "Szablon" ) if mw.title.compare(template, pagename) == 0 then traceCategory = categories.traceInvokeCustom end end local customMode = frame.args[1] local mode = 1 if customMode then customMode = mw.text.trim(customMode) for i, v in ipairs(resources.modes) do if customMode == v then mode = i break end end end return Cite(pf or frame, mode, traceCategory, null) end; p.custom2=function(frame) return custom(frame,frame:getParent()); end; return p; fiyyly6l6yy1s531ob9akpsvfcqqt2y 556505 556504 2026-09-15T06:55:32Z Persino 2851 556505 Scribunto text/plain local resources = mw.loadData("Moduł:Cytuj/dane") local access = mw.loadData("Moduł:Cytuj/dostęp") local function createCategories() local result = {} local mt = { __index = function(t,k) return resources.categories[k] or resources.categories.check end, __newindex = function(t,k,v) error("Kategorie są tylko do odczytu") end, } setmetatable(result, mt) return result end local categories = createCategories() local function killLinkInterwiki(value) -- usuń z treści wikilinki generowane przez szablon link-interwiki -- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia" local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "") return result end local function softNoWiki(text) local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = "&#x22;", ["'"] = "&#x27;", ["["] = "&#x5B;", ["]"] = "&#x5D;", ["{"] = "&#x7B;", ["|"] = "&#x7C;", ["}"] = "&#x7D;"}) -- przywróc [[szablon:J]] z kursywą tak/nie result, count = string.gsub(result, "<span +style=&#x22;font%-style: ?([a-z]+);?&#x22; +lang=&#x22;([a-z%-]+)&#x22; *>", "<span style=\"font-style: %1;\" lang=\"%2\">") -- przywróc [[szablon:J]] goły result, count = string.gsub(result, "<span +lang=&#x22;([a-z%-]+)&#x22; *>", "<span lang=\"%1\">") -- przywróć nowiki result, count = string.gsub(result, "\127&#x27;&#x22;`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`&#x22;&#x27;\127", "\127'\"`UNIQ--%1-QINU`\"'\127") return result end local function escapeUrl(url) local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"}) return result end local function plainText(text) local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "") return result end local function first(data) return type(data) == "table" and data[1] or data end local function determineMode(p) local detector = {} local count = 0 for i, v in ipairs(resources.modes) do detector[i] = v count = count + 1 end detector[1] = false -- skip 'auto' count = count - 1 for k, v in pairs(resources.params) do local arg = p.args[v.name] for i, w in ipairs(v.used) do if not w and arg then -- unexpected argument if detector[i] then detector[i] = false count = count - 1 if count == 0 then -- the mode cannot be determined break end end end end if count == 0 then -- the mode cannot be determined break end end if count == 1 then for i, v in ipairs(detector) do if detector[i] then return i, resources.COinS[i] end end end if detector[4] -- web? and p.args[resources.params.url.name] then -- promote to web but without COinS return 4, false end for i, v in ipairs(detector) do if detector[i] then -- if type is determined more than once -- use only the first one without COinS return i, false end end -- in case nothing is selected -- use the auto mode as default fallback return 1 end local authorMetatable = {} local authorMethodtable = {} authorMetatable.__index = authorMethodtable local function checkPatterns(author, prefixes, suffixes) if author.exact then return false end if author.prefix and prefixes then for _, v in ipairs(prefixes) do if mw.ustring.match(author.prefix, v) then return true end end end if author.suffix and suffixes then for _, v in ipairs(suffixes) do if mw.ustring.match(author.suffix, v) then return true end end end return false end authorMethodtable.format = function(data, namefirst) if data.exact then return data.exact end if namefirst and data.familynamefirst then namefirst = false end local builder = mw.html.create() local name = data.name and (#data.name > 0) local initials = data.nameinitials and (#data.nameinitials > 0) local namehint = nil if name and initials and (data.name ~= data.nameinitials) then namehint = data.name end if not data.familynamefirst and (name or initials) then local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before") if name then before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end before:wikitext("&nbsp;") end builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname)) if not namefirst and (name or initials) then local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after") after:wikitext("&nbsp;") if name then after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end if data.js then after:wikitext(",") end end if data.js then builder:wikitext("&nbsp;", data.js) end return tostring(builder) end authorMethodtable.towiki = function(data) if data.exact then return data.exact end local result = {} local name = data.name and (#data.name > 0) if not data.familynamefirst and name then table.insert(result,softNoWiki(data.name)) table.insert(result, " ") end table.insert(result, softNoWiki(data.lastname)) if data.familynamefirst and name then table.insert(result, " ") table.insert(result, softNoWiki(data.name)) end return table.concat(result) end local function makeInitials(name) local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h') nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C' nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje return mw.text.trim(nameinitials) end local function fixInitials(name) local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku return result end local function isInQuotes(text) if (string.len(text) < 2) then return false; end local tstart = text:sub(1, 1); if (tstart ~= '"') then return false; end local tend = text:sub(-1); if (tend ~= '"') then return false; end return true; end local function parseAuthor(author) local result = {} if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane result.exact = author setmetatable(result, authorMetatable) return result end local author = mw.text.trim(author) local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", }) if a ~= author then result.exact = a setmetatable(result, authorMetatable) return result end if resources.exactAuthors[author] then result.exact = author setmetatable(result, authorMetatable) return result end local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$") if exactName then result.exact = mw.text.trim(exactName) if #result.exact == 0 then return nil end setmetatable(result, authorMetatable) return result end local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$") if prefix0 then result.link = link author = description else prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$") if prefix0 then author = link result.link = link else prefix0 = "" suffix0 = "" end end local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$") if not prefix1 then rest = author prefix1 = "" end local prefix = mw.text.trim(prefix0.." "..prefix1) if #prefix > 0 then if mw.ustring.sub(prefix, -1) == "#" then result.familynamefirst = true prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$")) end if #prefix > 0 then result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces end end local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$") if not suffix then rest2 = rest suffix = "" end suffix = mw.text.trim(suffix.." "..suffix0) if #suffix > 0 then result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces suffix = " "..result.suffix for i, v in ipairs(resources.js) do if mw.ustring.match(suffix, v[1]) then result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], "")) result.js = v[2] break end end else for i, v in ipairs(resources.js) do if mw.ustring.match(rest2, v[1]) then rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], "")) result.js = v[2] break end end end local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$") if not lastname then if result.familynamefirst then lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$") else local prefix2 name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$") if not resources.lastnamePrefixes[prefix2] then name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$") end end elseif resources.lastnamePrefixes[prefix1] then lastname = prefix1 .. lastname elseif resources.lastnamePrefixes[prefix1] == false then name = name.." "..mw.text.trim(prefix1) end if not lastname then result.lastname = mw.text.trim(rest2) else result.name = fixInitials(name) result.lastname = lastname result.nameinitials = makeInitials(name) end if #result.lastname == 0 then return nil end setmetatable(result, authorMetatable) return result end local function parseDate(date, month, year, patch) local result = {} -- parse full date local y, m, d = false, false, false y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)") if y and patch and (date == (y.."-01-01")) then result.year = tonumber(y) result.month = false result.day = false return result, true end if not y then d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)") if not y then y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)") if not y then d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false d = false end end end end if y then y = tonumber(y) m = tonumber(m) d = tonumber(d) end if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then y = false m = false d = false elseif y then result.year = y result.month = m result.day = d return result, false end -- parse year and month y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)") if not y then m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)") if not y then y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)") if not y then m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false end end end end if y then y = tonumber(y) m = tonumber(m) end if y and ((m > 12) or (m < 1)) then y = false m = false elseif y then result.year = y result.month = m return result, false end -- try any method to extract year or month if not y then y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?") if y then y = tonumber(y) end if y then result.year = y end end if y then if not m then m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?") if m then m = resources.monthparser[mw.ustring.lower(m)] end if m then result.month = m end end else -- reset only month result.month = nil end if y then return result, false end end local function collectAuthors(author, checkForAltFormat) if not author then return end -- Obsługa cudzysłowów w autorach (treat quoted authors as-is) if (isInQuotes(mw.text.trim(author))) then local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ') return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" } end function findUtf8CharAt(text, at) local back = false if at < 0 then at = #text + at + 1 back = true end while at > 1 do local b = string.byte(text, at, at) if (b < 128) or (b >= 192) then break end at = at - 1 end return back and at - #text - 1 or at end local etal = false local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50)) for i, p in ipairs(resources.etalPatterns) do local a, e = string.match(authorTail, p) if a then author = string.sub(author, 1, #author-#e) etal = e break end end function decodeEntity(s) local result = nil local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$") if hex then result = mw.ustring.char(tonumber(hex, 16)) else local dec = string.match(s, "^&#([0-9]+);$") if dec then result = mw.ustring.char(tonumber(dec, 10)) elseif resources.htmlEntities[s] then result = mw.ustring.char(resources.htmlEntities[s]) else return string.gsub(s, ";", "\\:") end end if result == ";" then return "\\:" elseif result == "," then return "\\." elseif result == "\\" then return "\\\\" else return result end end local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1) local result = {} local esc1 = string.gsub(authorHead, "\\", "\\\\") local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity) local splitter = string.match(esc2, ";") and ";" or "," local authors = mw.text.split(esc2, splitter.."%s*", false) local nth = false local count = #authors if (#authorHead < #author) and (count > 4) then if count > 5 then table.remove(authors, count) count = count - 1 end local at, _ = string.find(authorHead, authors[count], 1, true) nth = string.sub(author, at) table.remove(authors, count) count = count - 1 end local alt = false if (splitter == ",") and checkForAltFormat then local altAuthors = {} alt = true for i, v in ipairs(authors) do local n0 = "" local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$") if not s then s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$") end if not s then n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc. end if not s then alt = false break end local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.") if #n0 > 0 then n0 = " "..n0 end table.insert(altAuthors, s..", "..initials..n0) end if alt then authors = altAuthors splitter = ";" end end for i, v in ipairs(authors) do local author = parseAuthor(v) if author then table.insert(result, author) end end if #result == 0 then return end local check = false if alt then check = "alt" elseif (#result == 2) and (splitter == ",") then check = not result[1].link and not result[1].exact and not result[1].name or not result[2].link and not result[2].exact and not result[2].name if check then if result[1].lastname and not result[1].name and not result[2].exact and not mw.ustring.match(result[1].lastname, "%S%s+%S") then local oneAuthor = parseAuthor(author) if oneAuthor then table.remove(result,2) result[1] = oneAuthor check = false end end end if check then mw.logObject(result,"przecinek u autora") end end return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " } end local function formatAuthors(authors, useDecorations, nextgroup, etalForm) local count = #authors.items if count == 0 then return nil, false end local suffix = function(author) if useDecorations then for _, v in ipairs(resources.authorFunc) do if checkPatterns(author, v.prefixes, v.suffixes) then return v.append end end end return "" end local formatter = function(author) local a = author:format(nextgroup) local r = author.link and ("[["..author.link.."|"..a.."]]") or a return r..suffix(author) end if count == 1 then local a1 = formatter(authors.items[1]) local etal = authors.etal and (etalForm or " i inni") or "" return a1..etal, false end local result = {} table.insert(result, formatter(authors.items[1])) if not authors.etal and (count <= 3) then table.insert(result, ", "); table.insert(result, formatter(authors.items[2])) if count == 3 then table.insert(result, ", "); table.insert(result, formatter(authors.items[3])) end return table.concat(result, ""), false end local title = {} for i = 1, count do table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i])) end if authors.more then table.insert(title, authors.more) end table.insert(result, "<span class=\"cite-at-al\" title=\"") table.insert(result, table.concat(title, authors.separator)) if authors.etal then table.insert(result, etalForm or " i inni") end table.insert(result, "\">") table.insert(result, etalForm or " i inni") table.insert(result, "</span>") return table.concat(result, ""), true end local function collectLanguages(value) if value then local result = {} local values = mw.text.split(value, "%s+") for _, v in ipairs(values) do if #v > 0 then table.insert(result, v) end end if #result > 0 then return result end end return nil end local function splitFileLink(link) local linkTitle = string.match(link, "^:(.+)$") if not linkTitle then return link, false end local title = mw.title.new(link) if not title then return link, false end mw.logObject(title.text, "splitFileLink - title.text") if title.namespace == 6 then local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$") if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end elseif #title.interwiki > 0 then local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$") if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end end return link, false end local function splitWikiLink(text) local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$") if link then local name, ext = splitFileLink(link) return description, link, false, ext end local link = mw.ustring.match(text, "^%[%[(.-)%]%]$") if link then local name, ext = splitFileLink(link) return name or link, link, false, ext end local strony_modul=require("Module:Strony"); local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$") if link and strony_modul.SprawdzanieURL(link) then return description, false, link, false end return text, false, false, false end local function detectArchive(url) local uri = mw.uri.new(url) local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]] if detectors then --mw.logObject(uri.host,"detectArchive uri.host") --mw.logObject(uri.relativePath,"detectArchive uri.relativePath") --mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service") for i, v in ipairs(detectors) do local pattern = v.pattern local decoder = resources.archiveDecoders.decoders[v.decoder] if pattern and decoder then local items = { mw.ustring.match(uri.relativePath, pattern) } if #items > 0 then --mw.logObject(items[decoder.link],"detectArchive link") --mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date") return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day] end end end end return false, false end local function isAutoGeneratedUrl(url) local address = string.gsub(url, "^https?:", "") for k, v in pairs(resources.params) do if v.link then local links = type(v.link) == "table" and v.link or { v.link } for _, vlink in ipairs(links) do local prefix = string.gsub(vlink, "^https?:", "") if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then return v.name end end end end return false end local function loadCitation(frame, mode) local result = {} -- map parameters based on: Moduł:Cytuj/dane for k, v in pairs(resources.params) do if v.used[mode] then local value = frame.args[v.name] if value then value = mw.text.trim(value) if #value > 0 then result[k] = value end end if (v.used[mode] == "!") and not result[k] then -- simulate missing mandatory parameter result[k] = "{{{"..v.name.."}}}" if not result.missing then result.missing = v.name end end end end -- check url argument if result.url == "nie" then result.url = false elseif result.url then local strony_modul=require("Module:Strony"); if not strony_modul.SprawdzanieURL(result.url) then local unstrip = mw.text.unstripNoWiki( result.url ) result.url = false if unstrip then result.urlnowiki = strony_modul.SprawdzanieURL(unstrip) end end end -- translate some parameters local altAuthorParser = false if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then altAuthorParser = true end result.chapterauthor = collectAuthors(result.chapterauthor, false) result.author = collectAuthors(result.author, altAuthorParser) result.lang = collectLanguages(result.lang) result.editor = collectAuthors(result.editor, false) result.others = collectAuthors(result.others, false) -- parse main bibliographic date if result.date then local bibDate = false local bibDateHint = false local coinsDate = false local odnDate = false for _, v in ipairs(resources.bibDates) do for _, p in ipairs(v.patterns) do local bib, c = mw.ustring.gsub(result.date, p, v.show) if bib and (c > 0) then bibDate = bib bibDateHint = v.hint if v.coins then local cd, cc = mw.ustring.gsub(result.date, p, v.coins) if cd and (cc > 0) then coinsDate = cd end end if v.odn then local od, oc = mw.ustring.gsub(result.date, p, v.odn) if od and (oc > 0) then odnDate = od end end break end if bibDate then break end end end if bibDate then result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate } else local date, patch = parseDate(result.date or "", false, false, true) if date then date.coins = (patch and date.year) or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day)) or (date.month and string.format("%04d-%02d", date.year, date.month)) or date.year date.odn = date.year elseif result.date then result.badDate = true end result.date = date result.patchCitoidDate = patch end end -- fix other dates if result.accessdate then result.accessdate = parseDate(result.accessdate or "", false, false, false) if result.accessdate and not result.accessdate.day then result.badAccessDate = true result.accessdate = nil elseif not result.accessdate then result.badAccessDate = true end end -- allow more ISBN numbers if result.isbn then -- TODO allow "(info)" for custom description followed each identifier result.isbn = mw.text.split(result.isbn, "%s+") end if result.title then local url result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title) if url or result.titlelink then if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then result.urlWarning = true end result.url = url end end if result.chapter then result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter) end if result.journal then local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ") mw.logObject(journalAbbr, "journalAbbr") if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)] if expandedJournal then result.originalJournal = result.journal result.journal = expandedJournal end end result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal) end if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then result.journalurl = result.url result.url = false end if result.url then local n = isAutoGeneratedUrl(result.url) if n then result.rejectedurl = true if result[n] then result.url = false end end end if result.chapterurl then local n = isAutoGeneratedUrl(result.chapterurl) if n then result.rejectedurl = true if result[n] then result.chapterurl = false end end end if result.journalurl then local n = isAutoGeneratedUrl(result.journalurl) if n then result.rejectedurl = true if result[n] then result.journalurl = false end end end if not result.archive and result.url then local al, ad = detectArchive(result.url) if al then result.archiveurl = true result.archive = result.url result.url = al if ad then result.archived = ad end end elseif not result.archive and result.chapterurl then local al, ad = detectArchive(result.chapterurl) if al then result.archivechapter = true result.archive = result.chapterurl result.chapterurl = al if ad then result.archived = ad end end elseif not result.archive and result.journalurl then local al, ad = detectArchive(result.journalurl) if al then result.archivejournal = true result.archive = result.journalurl result.journalurl = al if ad then result.archived = ad end end elseif result.archive and not result.archived then local al, ad = detectArchive(result.archive) if ad and not result.archived then result.archived = ad end end if result.archive then if result.chapterurl and not result.url then result.archivechapter = true elseif result.title then result.archiveurl = true elseif result.journal then result.archivejournal = true end end if result.archived then result.archived = parseDate(result.archived or "", false, false, false) if result.archived and not result.archived.day then result.badArchivedDate = true result.archived = null elseif not result.archived then result.badArchivedDate = true end end if result.edition and result.journal and not result.volume and not result.issue then local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$"); if volume then result.volume = volume result.issue = issue result.edition = nil end end if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc) end if result.accessKind then result.accessKind = access.choice[result.accessKind] result.unknownAccess = not result.accessKind else result.accessKind = (result.pmc and "open") or access.doi[doiPrefix] or access.journals[result.journal] end if result.doi then result.doi = mw.text.split(result.doi, '%s+', false) for i, v in ipairs(result.doi) do local doiPrefix local doiSuffix doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$") if (doiPrefix == "2307") and not result.jstor then result.jstor = doiSuffix end if not result.accessKind and not result.unknownAccess then result.accessKind = access.doi[doiPrefix] end end end if result.patent then mw.logObject(result.patent,"input:patent") local patentPatterns = mw.loadData("Moduł:Cytuj/patent") local patent = nil local strony_modul=require("Module:Strony"); for _, v in ipairs(patentPatterns) do if string.match(result.patent, v.pattern) then local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1") local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country) local patentInfo = v.info or patentPatterns.ccinfo[patentCountry] if (result.url == nil) and v.url then local url, _ = string.gsub(result.patent, v.pattern, v.url) if strony_modul.SprawdzanieURL(url) then result.url = url end end local patentTitle if v.title then patentTitle, _ = string.gsub(result.patent, v.pattern, v.title) elseif patentInfo then patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber) else patentTitle = patentCountry.." "..patentNumber end patent = { number = patentNumber, application = v.application, country = patentCountry, title = patentTitle, } break end end result.patent = patent mw.logObject(result.patent,"parsed:patent") end -- return collected parameters if there is any for k, v in pairs(result) do return result end -- there are no supported parameters return nil end local function prepareOdnIdentifier(data) if not data.odn or (#data.odn == 0) or (data.odn == "nie") then return nil end data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false if data.odn ~= "tak" and not data.diferentiator then -- TODO return only CITEREF... return data.odn end local authors = data.chapterauthor or data.author or data.editor if not authors then -- required custom identifier return nil end return "CITEREF" .. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "") .. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "") .. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "") .. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "") .. (data.date and data.date.odn or "") .. (data.diferentiator or "") end local function bookCOinS(data) local authors = data.chapterauthor or data.author local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book" if data.chapter and (#data.chapter > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.chapter) result["rft.btitle"] = plainText(data.title) elseif data.work and (#data.work > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.title) result["rft.btitle"] = plainText(data.work) else result["rft.btitle"] = plainText(data.title) result["rft.gengre"] = "book" end if authors then if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.series then result["rft.series"] = data.series end if data.edition then result["rft.edition"] = data.edition end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.isbn then result["rft.isbn"] = data.isbn[1] end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end local coinsData = table.concat(params, "&") return coinsData; end local function journalCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article" result["rft.gengre"] = data.title and gengre or "journal" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.journal) if data.chapter then result["rft.atitle"] = plainText(data.chapter) end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end if data.volume then result["rft.volume"] = data.volume end if data.issue then result["rft.edition"] = data.issue end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function webCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" result["rft.gengre"] = "unknown" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.published) if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function patentCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" if data.title then result["rft.title"] = plainText(data.title) end result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number result["rft.cc"] = data.patent.country if data.date and data.date.coins then result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins end if author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end -- rft.assignee = author (wszyscy?) -- rft.inventor = others (wszyscy?) local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function COinS(data, coinsFormat) if resources.abbrTitles[data.title] then -- full citation is elsewhere return false elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then -- title is mandatory element for books return bookCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then -- journal title is mandatory element for journals return journalCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then return webCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then return patentCOinS(data) elseif data.title and (#data.title > 0) then -- treat web or unrecognized citations as book return bookCOinS(data) else return false end end --[[ Format edition (number or marc 250$a). Different for journal. Tests: Wikipedysta:Nux/test Cytuj wydanie --]] local function formatEdition(edition, journal) local prefix = false if not journal then prefix = true if string.find(edition, "[Ww]yd[a. ]") then prefix = false elseif string.find(edition, "[Ee]dition") then prefix = false end end return (prefix and "wyd. " or "") .. edition end --[[ Main. --]] local function Cite(p, mode, appendText, firewall) -- typ jednostki 2 --local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame; local types; local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}} local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2) if(typ_jednostki=="artykuł")then types="(artykuły)"; elseif(typ_jednostki=="artykuł dla dzieci")then types="(artykuły dla dzieci)"; elseif(typ_jednostki=="strona użytkownika")then types="(strony użytkowników)"; elseif(typ_jednostki=="strona brudnopisu projektu")then types="(strony brudnopisu projektu)"; else types="(strony niepodręcznikowe)"; end; -- debug helper if p.args[3] then mw.log(p.args[3]) end local customMode = mode -- try to determine type basing on passed parameters local coinsFormat = resources.COinS[mode] if not mode then mode, coinsFormat = determineMode(p) end local data = loadCitation(p, mode) if not data then local result = mw.html.create("span") :addClass("problemy") :attr("aria-hidden", "true") :attr("data-nosnippet", "") :attr("data-problemy", "Brak wyników w szablonie cytowania") if mw.title.getCurrentTitle().namespace == 0 then result:wikitext(string.format(categories.empty,types)) end result:wikitext("&#8201;") -- thin space return tostring(result) end -- convert web page to book for old date if (mode == 4) and data.date and data.date.odn then local year = tonumber(data.date.odn) if year and (year < 1990) then mode = 2 end end if data.missing then -- do not produce any COiNS info -- if some mandatory argument is missing coinsFormat = false end local builder = mw.html.create("cite") builder :addClass("citation") :addClass(resources.cite[mode] or nil) :addClass(access.class[data.accessKind]) :attr("id", prepareOdnIdentifier(data)) --:wikitext(access.render[data.accessKind], ' ') local needDot = false local nextAuthorGroup = false if data.title or data.patent then if data.chapter then local authors = data.editor and data.author or data.chapterauthor if authors then local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil) builder:wikitext(list, ", ") nextAuthorGroup = true end local title = softNoWiki(data.chapter) if data.urlstatus == "ukryj" then if data.archivechapter and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.chapterurl then builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']") elseif data.chapterlink then builder:wikitext("[[", data.chapterlink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") end builder:wikitext(", [w:] ") end local authors = false local editor = false if not data.chapter and data.author then authors = data.author else authors = data.editor or data.author editor = data.editor end if authors then local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil) builder:wikitext(list) nextAuthorGroup = true if editor and not etal and not authors.etal then builder:wikitext(" (red.)") end builder:wikitext(", ") end if customMode and data.authorextra then builder:wikitext(data.authorextra, ", ") end if resources.abbrTitles[data.title] then local title = resources.abbrTitles[data.title] builder:wikitext(title) needDot = not mw.ustring.match(title, "%.%]%]$") and not mw.ustring.match(title, "%.$") elseif data.title then local title = softNoWiki(data.title) if data.urlstatus == "ukryj" then if data.archiveurl and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.url or data.archiveurl then builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']") elseif data.titlelink then builder:wikitext("[[", data.titlelink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if not data.chapter and data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") needDot = true elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then needDot = true end local showmediatype = data.mediatype and (#data.mediatype > 0) if showmediatype then builder:wikitext(" &#x5B;", data.mediatype, "&#x5D;") needDot = true end end if not editor and data.editor then local list, etal = formatAuthors(data.editor, false, true, " i inni red.") builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)") needDot = true end if data.others then local list, etal = formatAuthors(data.others, true, true, nil) builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list) needDot = true end if data.patent then local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title) needDot = true end elseif data.journal and data.author then local list, etal = formatAuthors(data.author, false, false, nil) builder:wikitext(list, ", ") end if data.work then builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work) needDot = true end -- web -> [online] if (mode == 4) and not data.mediatype then builder:wikitext(" [online]") end if data.journal and (not data.published or (data.journal ~= data.published)) then builder:wikitext((data.title or data.work) and ", " or "") local title = softNoWiki(data.journal) if data.urlstatus == "ukryj" then if data.archivejournal and data.archive then builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]") else builder:wikitext("„", title, "”") end elseif data.journalurl or data.archivejournal then builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]") elseif data.journallink then builder:wikitext("„[[", data.journallink, "|", title, "]]”") else builder:wikitext("„", title, "”") end needDot = true end if data.responsibility then builder:wikitext(", ", data.responsibility) needDot = true end if data.edition then builder:wikitext(", ", formatEdition(data.edition, data.journal)) needDot = true end if data.volume then builder:wikitext(data.journal and ", " or ", t. ", data.volume) needDot = true end if data.journal and data.issue then builder:wikitext(" (", data.issue, ")") needDot = true end if data.description and (#data.description > 0) then builder:wikitext(", ", data.description) needDot = true end if data.published and not data.publisher then builder:wikitext(", ", data.published) needDot = true end local place = false if data.place then builder:wikitext(", ", data.place) needDot = true place = true end if data.publisher then builder:wikitext(place and ": " or ", ", data.publisher) needDot = true place = false end if data.date then local shortDate = data.journal and (data.doi or data.pmid or data.pmc) if data.date.bib and data.date.hint then builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib) elseif data.date.bib then builder:wikitext(place and " " or ", ", data.date.bib) elseif data.date.day and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.month and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.day then builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year)) elseif data.date.month then builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year)) else builder:wikitext(place and " " or ", ", data.date.year) end builder:wikitext(data.diferentiator or "") needDot = true end if not data.journal and (data.series or data.issue) then builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")") needDot = true elseif data.journal and data.series then builder:wikitext(" (", data.series, ")") needDot = true end if data.p and #data.p > 0 then local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]") builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p) needDot = true end if data.doi then local separator = "&nbsp;" builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:") local doiLink = first(resources.params.doi.link) for _, v in ipairs(data.doi) do builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]") separator = ", " end needDot = true end if data.isbn then for i,v in ipairs(data.isbn) do builder:wikitext(", ") require("Moduł:ISBN").link(builder, v) end needDot = true end if data.lccn then builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]") needDot = true end if data.issn then builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]") needDot = true end if data.pmid then builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]:&nbsp;[", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]") needDot = true end if data.pmc then builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]:&nbsp;[", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]") needDot = true end if data.bibcode then builder:wikitext(", [[w:Bibcode|Bibcode]]:&nbsp;[", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]") needDot = true end if data.oclc then builder:wikitext(", [[w:Online Computer Library Center|OCLC]]&nbsp;[", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]") needDot = true end if data.arxiv then builder:wikitext(", [[arXiv]]:") local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$") if eprint then builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] &#x5B;[//arxiv.org/archive/", class, " ", class, "]&#x5D;" ) else builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" ) end needDot = true end if data.jstor then builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]:&nbsp;[", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]") needDot = true end if data.ol then builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]:&nbsp;[", first(resources.params.ol.link), data.ol, " ", data.ol, "]") needDot = true end if data.id then builder:wikitext(", ", data.id) needDot = true end if data.accessdate then builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]") needDot = true end if data.archive then builder:wikitext(" [zarchiwizowane") if data.urlstatus ~= "ukryj" then local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl) if url then builder:wikitext(" z [", escapeUrl(url), " adresu]") end end if data.archived and data.archived.day then builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day)) end builder:wikitext("]") needDot = true end if data.quotation then builder:wikitext(", Cytat: ", data.quotation) needDot = true end local coinsData = COinS(data, coinsFormat) if coinsData then builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext("&nbsp;") end if data.lang then local languages = require("Moduł:Lang").lang({args = data.lang}) builder:wikitext(" ", languages) needDot = true end if data.fullStop then if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then builder:wikitext(", ") end builder:wikitext(data.fullStop) needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil end if needDot then builder:wikitext(".") end if appendText then builder:wikitext(string.format(appendText,types)) end -- categories local addCategories = mw.title.getCurrentTitle().namespace == 0 local problems = {} if not customMode and (mode == 1) then builder:wikitext(string.format(categories.undetermined,types)) table.insert(problems, "???") end if data.publisher and data.published then table.insert(problems, "p?") if addCategories then table.insert(problems, string.format(categories.unusedPublished,types)) end end if data.journal and data.published and (data.journal == data.published) then table.insert(problems, "j?") if addCategories then table.insert(problems, string.fomat(categories.sameJournalAndPublished,types)) end end if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then builder:addClass(data.urlnowiki and "urlnowiki" or "nourl") end local missing = false local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*") if data.missing then -- usually missing title, this is the first check for mandatory arguments table.insert(problems, data.missing) missing = true elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then -- build in support for missing external link for page citation table.insert(problems, resources.params.url.name) missing = true else -- any other missing value (first catch) for k, v in pairs(resources.params) do if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then table.insert(problems, v.name) missing = true break end end end if missing and addCategories then builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode])) end if (data.chapterauthor and data.chapterauthor.comma) or (data.author and (data.author.comma == true)) or (data.editor and data.editor.comma) or (data.others and data.others.comma) then table.insert(problems, "!!!") if addCategories then builder:wikitext(string.format(categories.suspectedComma,types)) end end if data.author and (data.author.comma == "alt") then table.insert(problems, "a?") if addCategories then builder:wikitext(string.format(categories.altAuthor,types)) end end if data.originalJournal then builder:addClass("c") -- CSS dla lokalizacji w treści if addCategories then builder:wikitext(string.format(categories.altJournal,types)) end end local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia")); local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks")); if citewikipedia or citewikibooks then local justification = false local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {} for i, v in ipairs(acceptedLinks) do justification = (v == data.url) or (v == data.archive) if justification then break end end if not justification then table.insert(problems, "wiki?") if addCategories then if(citewikipedia)then builder:wikitext(string.format(categories.wikipedia,types)) end; if(citewikibooks)then builder:wikitext(string.format(categories.wikibooks,types)) end; end end end if data.unknownAccess then table.insert(problems, "dostęp?") if addCategories then builder:wikitext(string.format(categories.unknownAccess,types)) end end if data.rejectedurl then table.insert(problems, "<s>url</s>") if addCategories then builder:wikitext(string.format(categories.rejectedUrl,types)) end end if data.urlWarning then table.insert(problems, "Url") if addCategories then builder:wikitext(string.format(categories.unusedUrl,types)) end end if data.patchCitoidDate then table.insert(problems, "1 stycznia") end if data.badDate then table.insert(problems, "data?") end if data.badAccessDate then table.insert(problems, "data dostępu?") end if data.badArchivedDate then table.insert(problems, "zarchiwizowano?") end if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then builder:wikitext(string.format(categories.badDate,types)) end if (data.author and data.author.etal) or (data.chapterauthor and data.chapterauthor.etal) or (data.editor and data.editor.etal) or (data.others and data.others.etal) then table.insert(problems, "i inni") if addCategories then builder:wikitext(string.format(categories.etal,types)) end end if firewall then local reportFirewall = function(report) if report then table.insert(problems, report.info) if addCategories and report.cat then local cat = mw.ustring.format(categories.firewall, types, report.cat) builder:wikitext(cat) end end end local reportCommonsFile = function(ext) mw.logObject(ext, "ext") if ext and (firewall.commonsFile[ext] ~= false) then local issue = firewall.commonsFile[ext] or firewall.commonsFile[true] reportFirewall(firewall.reports[issue]) end end if data.url and firewall.url[data.url] ~= false then local uri = mw.uri.new(data.url) local issue = firewall.url[data.url] or firewall.host[uri.host] or firewall.path[uri.relativePath] reportFirewall(firewall.reports[issue]) end reportCommonsFile(data.chapterext) reportCommonsFile(data.titleext) reportCommonsFile(data.journalext) end if #problems > 0 then local info = builder:tag("span") :addClass("problemy") :addClass("problemy-w-cytuj") :attr("aria-hidden", "true") :attr("data-nosnippet", "") info:wikitext(table.concat(problems,", ")) end return builder:done() end local p={}; p.auto = function(frame) return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall")) end; p.custom = function(frame,pf) local traceCategory = false local pagename = mw.title.getCurrentTitle() if (pagename.namespace == 10) and frame.getParent then local template = mw.title.new( frame:getParent():getTitle(), "Szablon" ) if mw.title.compare(template, pagename) == 0 then traceCategory = categories.traceInvokeCustom end end local customMode = frame.args[1] local mode = 1 if customMode then customMode = mw.text.trim(customMode) for i, v in ipairs(resources.modes) do if customMode == v then mode = i break end end end return Cite(pf or frame, mode, traceCategory, null) end; p.custom2=function(frame) return p.custom(frame,frame:getParent()); end; return p; nhlyfelztwe0l7xz7orkx1m8jeom6hk 556506 556505 2026-09-15T07:19:36Z Persino 2851 556506 Scribunto text/plain local resources = mw.loadData("Moduł:Cytuj/dane") local access = mw.loadData("Moduł:Cytuj/dostęp") local function createCategories() local result = {} local mt = { __index = function(t,k) return resources.categories[k] or resources.categories.check end, __newindex = function(t,k,v) error("Kategorie są tylko do odczytu") end, } setmetatable(result, mt) return result end local categories = createCategories() local function killLinkInterwiki(value) -- usuń z treści wikilinki generowane przez szablon link-interwiki -- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia" local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "") return result end local function softNoWiki(text) local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = "&#x22;", ["'"] = "&#x27;", ["["] = "&#x5B;", ["]"] = "&#x5D;", ["{"] = "&#x7B;", ["|"] = "&#x7C;", ["}"] = "&#x7D;"}) -- przywróc [[szablon:J]] z kursywą tak/nie result, count = string.gsub(result, "<span +style=&#x22;font%-style: ?([a-z]+);?&#x22; +lang=&#x22;([a-z%-]+)&#x22; *>", "<span style=\"font-style: %1;\" lang=\"%2\">") -- przywróc [[szablon:J]] goły result, count = string.gsub(result, "<span +lang=&#x22;([a-z%-]+)&#x22; *>", "<span lang=\"%1\">") -- przywróć nowiki result, count = string.gsub(result, "\127&#x27;&#x22;`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`&#x22;&#x27;\127", "\127'\"`UNIQ--%1-QINU`\"'\127") return result end local function escapeUrl(url) local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"}) return result end local function plainText(text) local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "") return result end local function first(data) return type(data) == "table" and data[1] or data end local function determineMode(p) local detector = {} local count = 0 for i, v in ipairs(resources.modes) do detector[i] = v count = count + 1 end detector[1] = false -- skip 'auto' count = count - 1 for k, v in pairs(resources.params) do local arg = p.args[v.name] for i, w in ipairs(v.used) do if not w and arg then -- unexpected argument if detector[i] then detector[i] = false count = count - 1 if count == 0 then -- the mode cannot be determined break end end end end if count == 0 then -- the mode cannot be determined break end end if count == 1 then for i, v in ipairs(detector) do if detector[i] then return i, resources.COinS[i] end end end if detector[4] -- web? and p.args[resources.params.url.name] then -- promote to web but without COinS return 4, false end for i, v in ipairs(detector) do if detector[i] then -- if type is determined more than once -- use only the first one without COinS return i, false end end -- in case nothing is selected -- use the auto mode as default fallback return 1 end local authorMetatable = {} local authorMethodtable = {} authorMetatable.__index = authorMethodtable local function checkPatterns(author, prefixes, suffixes) if author.exact then return false end if author.prefix and prefixes then for _, v in ipairs(prefixes) do if mw.ustring.match(author.prefix, v) then return true end end end if author.suffix and suffixes then for _, v in ipairs(suffixes) do if mw.ustring.match(author.suffix, v) then return true end end end return false end authorMethodtable.format = function(data, namefirst) if data.exact then return data.exact end if namefirst and data.familynamefirst then namefirst = false end local builder = mw.html.create() local name = data.name and (#data.name > 0) local initials = data.nameinitials and (#data.nameinitials > 0) local namehint = nil if name and initials and (data.name ~= data.nameinitials) then namehint = data.name end if not data.familynamefirst and (name or initials) then local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before") if name then before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end before:wikitext("&nbsp;") end builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname)) if not namefirst and (name or initials) then local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after") after:wikitext("&nbsp;") if name then after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end if data.js then after:wikitext(",") end end if data.js then builder:wikitext("&nbsp;", data.js) end return tostring(builder) end authorMethodtable.towiki = function(data) if data.exact then return data.exact end local result = {} local name = data.name and (#data.name > 0) if not data.familynamefirst and name then table.insert(result,softNoWiki(data.name)) table.insert(result, " ") end table.insert(result, softNoWiki(data.lastname)) if data.familynamefirst and name then table.insert(result, " ") table.insert(result, softNoWiki(data.name)) end return table.concat(result) end local function makeInitials(name) local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h') nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C' nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje return mw.text.trim(nameinitials) end local function fixInitials(name) local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku return result end local function isInQuotes(text) if (string.len(text) < 2) then return false; end local tstart = text:sub(1, 1); if (tstart ~= '"') then return false; end local tend = text:sub(-1); if (tend ~= '"') then return false; end return true; end local function parseAuthor(author) local result = {} if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane result.exact = author setmetatable(result, authorMetatable) return result end local author = mw.text.trim(author) local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", }) if a ~= author then result.exact = a setmetatable(result, authorMetatable) return result end if resources.exactAuthors[author] then result.exact = author setmetatable(result, authorMetatable) return result end local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$") if exactName then result.exact = mw.text.trim(exactName) if #result.exact == 0 then return nil end setmetatable(result, authorMetatable) return result end local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$") if prefix0 then result.link = link author = description else prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$") if prefix0 then author = link result.link = link else prefix0 = "" suffix0 = "" end end local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$") if not prefix1 then rest = author prefix1 = "" end local prefix = mw.text.trim(prefix0.." "..prefix1) if #prefix > 0 then if mw.ustring.sub(prefix, -1) == "#" then result.familynamefirst = true prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$")) end if #prefix > 0 then result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces end end local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$") if not suffix then rest2 = rest suffix = "" end suffix = mw.text.trim(suffix.." "..suffix0) if #suffix > 0 then result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces suffix = " "..result.suffix for i, v in ipairs(resources.js) do if mw.ustring.match(suffix, v[1]) then result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], "")) result.js = v[2] break end end else for i, v in ipairs(resources.js) do if mw.ustring.match(rest2, v[1]) then rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], "")) result.js = v[2] break end end end local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$") if not lastname then if result.familynamefirst then lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$") else local prefix2 name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$") if not resources.lastnamePrefixes[prefix2] then name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$") end end elseif resources.lastnamePrefixes[prefix1] then lastname = prefix1 .. lastname elseif resources.lastnamePrefixes[prefix1] == false then name = name.." "..mw.text.trim(prefix1) end if not lastname then result.lastname = mw.text.trim(rest2) else result.name = fixInitials(name) result.lastname = lastname result.nameinitials = makeInitials(name) end if #result.lastname == 0 then return nil end setmetatable(result, authorMetatable) return result end local function parseDate(date, month, year, patch) local result = {} -- parse full date local y, m, d = false, false, false y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)") if y and patch and (date == (y.."-01-01")) then result.year = tonumber(y) result.month = false result.day = false return result, true end if not y then d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)") if not y then y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)") if not y then d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false d = false end end end end if y then y = tonumber(y) m = tonumber(m) d = tonumber(d) end if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then y = false m = false d = false elseif y then result.year = y result.month = m result.day = d return result, false end -- parse year and month y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)") if not y then m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)") if not y then y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)") if not y then m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false end end end end if y then y = tonumber(y) m = tonumber(m) end if y and ((m > 12) or (m < 1)) then y = false m = false elseif y then result.year = y result.month = m return result, false end -- try any method to extract year or month if not y then y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?") if y then y = tonumber(y) end if y then result.year = y end end if y then if not m then m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?") if m then m = resources.monthparser[mw.ustring.lower(m)] end if m then result.month = m end end else -- reset only month result.month = nil end if y then return result, false end end local function collectAuthors(author, checkForAltFormat) if not author then return end -- Obsługa cudzysłowów w autorach (treat quoted authors as-is) if (isInQuotes(mw.text.trim(author))) then local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ') return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" } end function findUtf8CharAt(text, at) local back = false if at < 0 then at = #text + at + 1 back = true end while at > 1 do local b = string.byte(text, at, at) if (b < 128) or (b >= 192) then break end at = at - 1 end return back and at - #text - 1 or at end local etal = false local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50)) for i, p in ipairs(resources.etalPatterns) do local a, e = string.match(authorTail, p) if a then author = string.sub(author, 1, #author-#e) etal = e break end end function decodeEntity(s) local result = nil local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$") if hex then result = mw.ustring.char(tonumber(hex, 16)) else local dec = string.match(s, "^&#([0-9]+);$") if dec then result = mw.ustring.char(tonumber(dec, 10)) elseif resources.htmlEntities[s] then result = mw.ustring.char(resources.htmlEntities[s]) else return string.gsub(s, ";", "\\:") end end if result == ";" then return "\\:" elseif result == "," then return "\\." elseif result == "\\" then return "\\\\" else return result end end local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1) local result = {} local esc1 = string.gsub(authorHead, "\\", "\\\\") local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity) local splitter = string.match(esc2, ";") and ";" or "," local authors = mw.text.split(esc2, splitter.."%s*", false) local nth = false local count = #authors if (#authorHead < #author) and (count > 4) then if count > 5 then table.remove(authors, count) count = count - 1 end local at, _ = string.find(authorHead, authors[count], 1, true) nth = string.sub(author, at) table.remove(authors, count) count = count - 1 end local alt = false if (splitter == ",") and checkForAltFormat then local altAuthors = {} alt = true for i, v in ipairs(authors) do local n0 = "" local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$") if not s then s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$") end if not s then n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc. end if not s then alt = false break end local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.") if #n0 > 0 then n0 = " "..n0 end table.insert(altAuthors, s..", "..initials..n0) end if alt then authors = altAuthors splitter = ";" end end for i, v in ipairs(authors) do local author = parseAuthor(v) if author then table.insert(result, author) end end if #result == 0 then return end local check = false if alt then check = "alt" elseif (#result == 2) and (splitter == ",") then check = not result[1].link and not result[1].exact and not result[1].name or not result[2].link and not result[2].exact and not result[2].name if check then if result[1].lastname and not result[1].name and not result[2].exact and not mw.ustring.match(result[1].lastname, "%S%s+%S") then local oneAuthor = parseAuthor(author) if oneAuthor then table.remove(result,2) result[1] = oneAuthor check = false end end end if check then mw.logObject(result,"przecinek u autora") end end return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " } end local function formatAuthors(authors, useDecorations, nextgroup, etalForm) local count = #authors.items if count == 0 then return nil, false end local suffix = function(author) if useDecorations then for _, v in ipairs(resources.authorFunc) do if checkPatterns(author, v.prefixes, v.suffixes) then return v.append end end end return "" end local formatter = function(author) local a = author:format(nextgroup) local r = author.link and ("[["..author.link.."|"..a.."]]") or a return r..suffix(author) end if count == 1 then local a1 = formatter(authors.items[1]) local etal = authors.etal and (etalForm or " i inni") or "" return a1..etal, false end local result = {} table.insert(result, formatter(authors.items[1])) if not authors.etal and (count <= 3) then table.insert(result, ", "); table.insert(result, formatter(authors.items[2])) if count == 3 then table.insert(result, ", "); table.insert(result, formatter(authors.items[3])) end return table.concat(result, ""), false end local title = {} for i = 1, count do table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i])) end if authors.more then table.insert(title, authors.more) end table.insert(result, "<span class=\"cite-at-al\" title=\"") table.insert(result, table.concat(title, authors.separator)) if authors.etal then table.insert(result, etalForm or " i inni") end table.insert(result, "\">") table.insert(result, etalForm or " i inni") table.insert(result, "</span>") return table.concat(result, ""), true end local function collectLanguages(value) if value then local result = {} local values = mw.text.split(value, "%s+") for _, v in ipairs(values) do if #v > 0 then table.insert(result, v) end end if #result > 0 then return result end end return nil end local function splitFileLink(link) local linkTitle = string.match(link, "^:(.+)$") if not linkTitle then return link, false end local title = mw.title.new(link) if not title then return link, false end mw.logObject(title.text, "splitFileLink - title.text") if title.namespace == 6 then local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$") if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end elseif #title.interwiki > 0 then local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$") if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end end return link, false end local function splitWikiLink(text) local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$") if link then local name, ext = splitFileLink(link) return description, link, false, ext end local link = mw.ustring.match(text, "^%[%[(.-)%]%]$") if link then local name, ext = splitFileLink(link) return name or link, link, false, ext end local strony_modul=require("Module:Strony"); local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$") if link and strony_modul.SprawdzanieURL(link) then return description, false, link, false end return text, false, false, false end local function detectArchive(url) local uri = mw.uri.new(url) local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]] if detectors then --mw.logObject(uri.host,"detectArchive uri.host") --mw.logObject(uri.relativePath,"detectArchive uri.relativePath") --mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service") for i, v in ipairs(detectors) do local pattern = v.pattern local decoder = resources.archiveDecoders.decoders[v.decoder] if pattern and decoder then local items = { mw.ustring.match(uri.relativePath, pattern) } if #items > 0 then --mw.logObject(items[decoder.link],"detectArchive link") --mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date") return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day] end end end end return false, false end local function isAutoGeneratedUrl(url) local address = string.gsub(url, "^https?:", "") for k, v in pairs(resources.params) do if v.link then local links = type(v.link) == "table" and v.link or { v.link } for _, vlink in ipairs(links) do local prefix = string.gsub(vlink, "^https?:", "") if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then return v.name end end end end return false end local function loadCitation(frame, mode) local result = {} -- map parameters based on: Moduł:Cytuj/dane for k, v in pairs(resources.params) do if v.used[mode] then local value = frame.args[v.name] if value then value = mw.text.trim(value) if #value > 0 then result[k] = value end end if (v.used[mode] == "!") and not result[k] then -- simulate missing mandatory parameter result[k] = "{{{"..v.name.."}}}" if not result.missing then result.missing = v.name end end end end -- check url argument if result.url == "nie" then result.url = false elseif result.url then local strony_modul=require("Module:Strony"); if not strony_modul.SprawdzanieURL(result.url) then local unstrip = mw.text.unstripNoWiki( result.url ) result.url = false if unstrip then result.urlnowiki = strony_modul.SprawdzanieURL(unstrip) end end end -- translate some parameters local altAuthorParser = false if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then altAuthorParser = true end result.chapterauthor = collectAuthors(result.chapterauthor, false) result.author = collectAuthors(result.author, altAuthorParser) result.lang = collectLanguages(result.lang) result.editor = collectAuthors(result.editor, false) result.others = collectAuthors(result.others, false) -- parse main bibliographic date if result.date then local bibDate = false local bibDateHint = false local coinsDate = false local odnDate = false for _, v in ipairs(resources.bibDates) do for _, p in ipairs(v.patterns) do local bib, c = mw.ustring.gsub(result.date, p, v.show) if bib and (c > 0) then bibDate = bib bibDateHint = v.hint if v.coins then local cd, cc = mw.ustring.gsub(result.date, p, v.coins) if cd and (cc > 0) then coinsDate = cd end end if v.odn then local od, oc = mw.ustring.gsub(result.date, p, v.odn) if od and (oc > 0) then odnDate = od end end break end if bibDate then break end end end if bibDate then result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate } else local date, patch = parseDate(result.date or "", false, false, true) if date then date.coins = (patch and date.year) or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day)) or (date.month and string.format("%04d-%02d", date.year, date.month)) or date.year date.odn = date.year elseif result.date then result.badDate = true end result.date = date result.patchCitoidDate = patch end end -- fix other dates if result.accessdate then result.accessdate = parseDate(result.accessdate or "", false, false, false) if result.accessdate and not result.accessdate.day then result.badAccessDate = true result.accessdate = nil elseif not result.accessdate then result.badAccessDate = true end end -- allow more ISBN numbers if result.isbn then -- TODO allow "(info)" for custom description followed each identifier result.isbn = mw.text.split(result.isbn, "%s+") end if result.title then local url result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title) if url or result.titlelink then if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then result.urlWarning = true end result.url = url end end if result.chapter then result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter) end if result.journal then local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ") mw.logObject(journalAbbr, "journalAbbr") if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)] if expandedJournal then result.originalJournal = result.journal result.journal = expandedJournal end end result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal) end if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then result.journalurl = result.url result.url = false end if result.url then local n = isAutoGeneratedUrl(result.url) if n then result.rejectedurl = true if result[n] then result.url = false end end end if result.chapterurl then local n = isAutoGeneratedUrl(result.chapterurl) if n then result.rejectedurl = true if result[n] then result.chapterurl = false end end end if result.journalurl then local n = isAutoGeneratedUrl(result.journalurl) if n then result.rejectedurl = true if result[n] then result.journalurl = false end end end if not result.archive and result.url then local al, ad = detectArchive(result.url) if al then result.archiveurl = true result.archive = result.url result.url = al if ad then result.archived = ad end end elseif not result.archive and result.chapterurl then local al, ad = detectArchive(result.chapterurl) if al then result.archivechapter = true result.archive = result.chapterurl result.chapterurl = al if ad then result.archived = ad end end elseif not result.archive and result.journalurl then local al, ad = detectArchive(result.journalurl) if al then result.archivejournal = true result.archive = result.journalurl result.journalurl = al if ad then result.archived = ad end end elseif result.archive and not result.archived then local al, ad = detectArchive(result.archive) if ad and not result.archived then result.archived = ad end end if result.archive then if result.chapterurl and not result.url then result.archivechapter = true elseif result.title then result.archiveurl = true elseif result.journal then result.archivejournal = true end end if result.archived then result.archived = parseDate(result.archived or "", false, false, false) if result.archived and not result.archived.day then result.badArchivedDate = true result.archived = null elseif not result.archived then result.badArchivedDate = true end end if result.edition and result.journal and not result.volume and not result.issue then local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$"); if volume then result.volume = volume result.issue = issue result.edition = nil end end if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc) end if result.accessKind then result.accessKind = access.choice[result.accessKind] result.unknownAccess = not result.accessKind else result.accessKind = (result.pmc and "open") or access.doi[doiPrefix] or access.journals[result.journal] end if result.doi then result.doi = mw.text.split(result.doi, '%s+', false) for i, v in ipairs(result.doi) do local doiPrefix local doiSuffix doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$") if (doiPrefix == "2307") and not result.jstor then result.jstor = doiSuffix end if not result.accessKind and not result.unknownAccess then result.accessKind = access.doi[doiPrefix] end end end if result.patent then mw.logObject(result.patent,"input:patent") local patentPatterns = mw.loadData("Moduł:Cytuj/patent") local patent = nil local strony_modul=require("Module:Strony"); for _, v in ipairs(patentPatterns) do if string.match(result.patent, v.pattern) then local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1") local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country) local patentInfo = v.info or patentPatterns.ccinfo[patentCountry] if (result.url == nil) and v.url then local url, _ = string.gsub(result.patent, v.pattern, v.url) if strony_modul.SprawdzanieURL(url) then result.url = url end end local patentTitle if v.title then patentTitle, _ = string.gsub(result.patent, v.pattern, v.title) elseif patentInfo then patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber) else patentTitle = patentCountry.." "..patentNumber end patent = { number = patentNumber, application = v.application, country = patentCountry, title = patentTitle, } break end end result.patent = patent mw.logObject(result.patent,"parsed:patent") end -- return collected parameters if there is any for k, v in pairs(result) do return result end -- there are no supported parameters return nil end local function prepareOdnIdentifier(data) if not data.odn or (#data.odn == 0) or (data.odn == "nie") then return nil end data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false if data.odn ~= "tak" and not data.diferentiator then -- TODO return only CITEREF... return data.odn end local authors = data.chapterauthor or data.author or data.editor if not authors then -- required custom identifier return nil end return "CITEREF" .. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "") .. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "") .. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "") .. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "") .. (data.date and data.date.odn or "") .. (data.diferentiator or "") end local function bookCOinS(data) local authors = data.chapterauthor or data.author local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book" if data.chapter and (#data.chapter > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.chapter) result["rft.btitle"] = plainText(data.title) elseif data.work and (#data.work > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.title) result["rft.btitle"] = plainText(data.work) else result["rft.btitle"] = plainText(data.title) result["rft.gengre"] = "book" end if authors then if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.series then result["rft.series"] = data.series end if data.edition then result["rft.edition"] = data.edition end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.isbn then result["rft.isbn"] = data.isbn[1] end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end local coinsData = table.concat(params, "&") return coinsData; end local function journalCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article" result["rft.gengre"] = data.title and gengre or "journal" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.journal) if data.chapter then result["rft.atitle"] = plainText(data.chapter) end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end if data.volume then result["rft.volume"] = data.volume end if data.issue then result["rft.edition"] = data.issue end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function webCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" result["rft.gengre"] = "unknown" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.published) if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function patentCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" if data.title then result["rft.title"] = plainText(data.title) end result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number result["rft.cc"] = data.patent.country if data.date and data.date.coins then result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins end if author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end -- rft.assignee = author (wszyscy?) -- rft.inventor = others (wszyscy?) local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function COinS(data, coinsFormat) if resources.abbrTitles[data.title] then -- full citation is elsewhere return false elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then -- title is mandatory element for books return bookCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then -- journal title is mandatory element for journals return journalCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then return webCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then return patentCOinS(data) elseif data.title and (#data.title > 0) then -- treat web or unrecognized citations as book return bookCOinS(data) else return false end end --[[ Format edition (number or marc 250$a). Different for journal. Tests: Wikipedysta:Nux/test Cytuj wydanie --]] local function formatEdition(edition, journal) local prefix = false if not journal then prefix = true if string.find(edition, "[Ww]yd[a. ]") then prefix = false elseif string.find(edition, "[Ee]dition") then prefix = false end end return (prefix and "wyd. " or "") .. edition end --[[ Main. --]] local function Cite(p, mode, appendText, firewall) -- typ jednostki 2 --local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame; local types; local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}} local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2) if(typ_jednostki=="artykuł")then types="(artykuły)"; elseif(typ_jednostki=="artykuł dla dzieci")then types="(artykuły dla dzieci)"; elseif(typ_jednostki=="strona użytkownika")then types="(strony użytkowników)"; elseif(typ_jednostki=="strona brudnopisu projektu")then types="(strony brudnopisu projektu)"; else types="(strony niepodręcznikowe)"; end; -- debug helper if p.args[3] then mw.log(p.args[3]) end local customMode = mode -- try to determine type basing on passed parameters local coinsFormat = resources.COinS[mode] if not mode then mode, coinsFormat = determineMode(p) end local data = loadCitation(p, mode) if not data then local result = mw.html.create("span") :addClass("problemy") :attr("aria-hidden", "true") :attr("data-nosnippet", "") :attr("data-problemy", "Brak wyników w szablonie cytowania") if mw.title.getCurrentTitle().namespace == 0 then result:wikitext(string.format(categories.empty,types)) end result:wikitext("&#8201;") -- thin space return tostring(result) end -- convert web page to book for old date if (mode == 4) and data.date and data.date.odn then local year = tonumber(data.date.odn) if year and (year < 1990) then mode = 2 end end if data.missing then -- do not produce any COiNS info -- if some mandatory argument is missing coinsFormat = false end local builder = mw.html.create("cite") builder :addClass("citation") :addClass(resources.cite[mode] or nil) :addClass(access.class[data.accessKind]) :attr("id", prepareOdnIdentifier(data)) --:wikitext(access.render[data.accessKind], ' ') local needDot = false local nextAuthorGroup = false if data.title or data.patent then if data.chapter then local authors = data.editor and data.author or data.chapterauthor if authors then local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil) builder:wikitext(list, ", ") nextAuthorGroup = true end local title = softNoWiki(data.chapter) if data.urlstatus == "ukryj" then if data.archivechapter and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.chapterurl then builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']") elseif data.chapterlink then builder:wikitext("[[", data.chapterlink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") end builder:wikitext(", [w:] ") end local authors = false local editor = false if not data.chapter and data.author then authors = data.author else authors = data.editor or data.author editor = data.editor end if authors then local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil) builder:wikitext(list) nextAuthorGroup = true if editor and not etal and not authors.etal then builder:wikitext(" (red.)") end builder:wikitext(", ") end if customMode and data.authorextra then builder:wikitext(data.authorextra, ", ") end if resources.abbrTitles[data.title] then local title = resources.abbrTitles[data.title] builder:wikitext(title) needDot = not mw.ustring.match(title, "%.%]%]$") and not mw.ustring.match(title, "%.$") elseif data.title then local title = softNoWiki(data.title) if data.urlstatus == "ukryj" then if data.archiveurl and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.url or data.archiveurl then builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']") elseif data.titlelink then builder:wikitext("[[", data.titlelink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if not data.chapter and data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") needDot = true elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then needDot = true end local showmediatype = data.mediatype and (#data.mediatype > 0) if showmediatype then builder:wikitext(" &#x5B;", data.mediatype, "&#x5D;") needDot = true end end if not editor and data.editor then local list, etal = formatAuthors(data.editor, false, true, " i inni red.") builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)") needDot = true end if data.others then local list, etal = formatAuthors(data.others, true, true, nil) builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list) needDot = true end if data.patent then local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title) needDot = true end elseif data.journal and data.author then local list, etal = formatAuthors(data.author, false, false, nil) builder:wikitext(list, ", ") end if data.work then builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work) needDot = true end -- web -> [online] if (mode == 4) and not data.mediatype then builder:wikitext(" [online]") end if data.journal and (not data.published or (data.journal ~= data.published)) then builder:wikitext((data.title or data.work) and ", " or "") local title = softNoWiki(data.journal) if data.urlstatus == "ukryj" then if data.archivejournal and data.archive then builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]") else builder:wikitext("„", title, "”") end elseif data.journalurl or data.archivejournal then builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]") elseif data.journallink then builder:wikitext("„[[", data.journallink, "|", title, "]]”") else builder:wikitext("„", title, "”") end needDot = true end if data.responsibility then builder:wikitext(", ", data.responsibility) needDot = true end if data.edition then builder:wikitext(", ", formatEdition(data.edition, data.journal)) needDot = true end if data.volume then builder:wikitext(data.journal and ", " or ", t. ", data.volume) needDot = true end if data.journal and data.issue then builder:wikitext(" (", data.issue, ")") needDot = true end if data.description and (#data.description > 0) then builder:wikitext(", ", data.description) needDot = true end if data.published and not data.publisher then builder:wikitext(", ", data.published) needDot = true end local place = false if data.place then builder:wikitext(", ", data.place) needDot = true place = true end if data.publisher then builder:wikitext(place and ": " or ", ", data.publisher) needDot = true place = false end if data.date then local shortDate = data.journal and (data.doi or data.pmid or data.pmc) if data.date.bib and data.date.hint then builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib) elseif data.date.bib then builder:wikitext(place and " " or ", ", data.date.bib) elseif data.date.day and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.month and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.day then builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year)) elseif data.date.month then builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year)) else builder:wikitext(place and " " or ", ", data.date.year) end builder:wikitext(data.diferentiator or "") needDot = true end if not data.journal and (data.series or data.issue) then builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")") needDot = true elseif data.journal and data.series then builder:wikitext(" (", data.series, ")") needDot = true end if data.p and #data.p > 0 then local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]") builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p) needDot = true end if data.doi then local separator = "&nbsp;" builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:") local doiLink = first(resources.params.doi.link) for _, v in ipairs(data.doi) do builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]") separator = ", " end needDot = true end if data.isbn then for i,v in ipairs(data.isbn) do builder:wikitext(", ") require("Moduł:ISBN").link(builder, v) end needDot = true end if data.lccn then builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]") needDot = true end if data.issn then builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]") needDot = true end if data.pmid then builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]:&nbsp;[", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]") needDot = true end if data.pmc then builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]:&nbsp;[", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]") needDot = true end if data.bibcode then builder:wikitext(", [[w:Bibcode|Bibcode]]:&nbsp;[", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]") needDot = true end if data.oclc then builder:wikitext(", [[w:Online Computer Library Center|OCLC]]&nbsp;[", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]") needDot = true end if data.arxiv then builder:wikitext(", [[arXiv]]:") local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$") if eprint then builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] &#x5B;[//arxiv.org/archive/", class, " ", class, "]&#x5D;" ) else builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" ) end needDot = true end if data.jstor then builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]:&nbsp;[", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]") needDot = true end if data.ol then builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]:&nbsp;[", first(resources.params.ol.link), data.ol, " ", data.ol, "]") needDot = true end if data.id then builder:wikitext(", ", data.id) needDot = true end if data.accessdate then builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]") needDot = true end if data.archive then builder:wikitext(" [zarchiwizowane") if data.urlstatus ~= "ukryj" then local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl) if url then builder:wikitext(" z [", escapeUrl(url), " adresu]") end end if data.archived and data.archived.day then builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day)) end builder:wikitext("]") needDot = true end if data.quotation then builder:wikitext(", Cytat: ", data.quotation) needDot = true end local coinsData = COinS(data, coinsFormat) if coinsData then builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext("&nbsp;") end if data.lang then local languages = require("Moduł:Lang").lang({args = data.lang}) builder:wikitext(" ", languages) needDot = true end if data.fullStop then if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then builder:wikitext(", ") end builder:wikitext(data.fullStop) needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil end if needDot then builder:wikitext(".") end if appendText then builder:wikitext(string.format(appendText,types)) end -- categories local addCategories = mw.title.getCurrentTitle().namespace == 0 local problems = {} if not customMode and (mode == 1) then builder:wikitext(string.format(categories.undetermined,types)) table.insert(problems, "???") end if data.publisher and data.published then table.insert(problems, "p?") if addCategories then table.insert(problems, string.format(categories.unusedPublished,types)) end end if data.journal and data.published and (data.journal == data.published) then table.insert(problems, "j?") if addCategories then table.insert(problems, string.fomat(categories.sameJournalAndPublished,types)) end end if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then builder:addClass(data.urlnowiki and "urlnowiki" or "nourl") end local missing = false local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*") if data.missing then -- usually missing title, this is the first check for mandatory arguments table.insert(problems, data.missing) missing = true elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then -- build in support for missing external link for page citation table.insert(problems, resources.params.url.name) missing = true else -- any other missing value (first catch) for k, v in pairs(resources.params) do if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then table.insert(problems, v.name) missing = true break end end end if missing and addCategories then builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode])) end if (data.chapterauthor and data.chapterauthor.comma) or (data.author and (data.author.comma == true)) or (data.editor and data.editor.comma) or (data.others and data.others.comma) then table.insert(problems, "!!!") if addCategories then builder:wikitext(string.format(categories.suspectedComma,types)) end end if data.author and (data.author.comma == "alt") then table.insert(problems, "a?") if addCategories then builder:wikitext(string.format(categories.altAuthor,types)) end end if data.originalJournal then builder:addClass("c") -- CSS dla lokalizacji w treści if addCategories then builder:wikitext(string.format(categories.altJournal,types)) end end local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia")); local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks")); if citewikipedia or citewikibooks then local justification = false local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {} for i, v in ipairs(acceptedLinks) do justification = (v == data.url) or (v == data.archive) if justification then break end end if not justification then table.insert(problems, "wiki?") if addCategories then if(citewikipedia)then builder:wikitext(string.format(categories.wikipedia,types)) end; if(citewikibooks)then builder:wikitext(string.format(categories.wikibooks,types)) end; end end end if data.unknownAccess then table.insert(problems, "dostęp?") if addCategories then builder:wikitext(string.format(categories.unknownAccess,types)) end end if data.rejectedurl then table.insert(problems, "<s>url</s>") if addCategories then builder:wikitext(string.format(categories.rejectedUrl,types)) end end if data.urlWarning then table.insert(problems, "Url") if addCategories then builder:wikitext(string.format(categories.unusedUrl,types)) end end if data.patchCitoidDate then table.insert(problems, "1 stycznia") end if data.badDate then table.insert(problems, "data?") end if data.badAccessDate then table.insert(problems, "data dostępu?") end if data.badArchivedDate then table.insert(problems, "zarchiwizowano?") end if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then builder:wikitext(string.format(categories.badDate,types)) end if (data.author and data.author.etal) or (data.chapterauthor and data.chapterauthor.etal) or (data.editor and data.editor.etal) or (data.others and data.others.etal) then table.insert(problems, "i inni") if addCategories then builder:wikitext(string.format(categories.etal,types)) end end if firewall then local reportFirewall = function(report) if report then table.insert(problems, report.info) if addCategories and report.cat then local cat = mw.ustring.format(categories.firewall, types, report.cat) builder:wikitext(cat) end end end local reportCommonsFile = function(ext) mw.logObject(ext, "ext") if ext and (firewall.commonsFile[ext] ~= false) then local issue = firewall.commonsFile[ext] or firewall.commonsFile[true] reportFirewall(firewall.reports[issue]) end end if data.url and firewall.url[data.url] ~= false then local uri = mw.uri.new(data.url) local issue = firewall.url[data.url] or firewall.host[uri.host] or firewall.path[uri.relativePath] reportFirewall(firewall.reports[issue]) end reportCommonsFile(data.chapterext) reportCommonsFile(data.titleext) reportCommonsFile(data.journalext) end if #problems > 0 then local info = builder:tag("span") :addClass("problemy") :addClass("problemy-w-cytuj") :attr("aria-hidden", "true") :attr("data-nosnippet", "") info:wikitext(table.concat(problems,", ")) end return builder:done() end local p={}; p.auto = function(frame) return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall")) end; p.custom = function(frame,pf) frame=pf or frame; local traceCategory = false local pagename = mw.title.getCurrentTitle() if (pagename.namespace == 10) and (pf or frame.getParent) then local nazwa_zablonu_rodzica=(pf or frame:getParent()).args["nazwa szablonu rodzica"]; local pelna_nazwa_zablonu_rodzica=nazwa_zablonu_rodzica and ("Szablon:"..nazwa_zablonu_rodzica) or nil; local template = mw.title.new(pelna_nazwa_zablonu_rodzica or (pf or frame:getParent()):getTitle(), "Szablon" ) if mw.title.compare(template, pagename) == 0 then traceCategory = categories.traceInvokeCustom end end local customMode = frame.args[1] local mode = 1 if customMode then customMode = mw.text.trim(customMode) for i, v in ipairs(resources.modes) do if customMode == v then mode = i break end end end return Cite(frame, mode, traceCategory, null) end; p.custom2=function(frame) return p.custom(frame,frame:getParent()); end; return p; reu37cx096avegu5ta40zj3seaqq906 556519 556506 2026-09-15T07:50:06Z Persino 2851 556519 Scribunto text/plain local resources = mw.loadData("Moduł:Cytuj/dane") local access = mw.loadData("Moduł:Cytuj/dostęp") local function createCategories() local result = {} local mt = { __index = function(t,k) return resources.categories[k] or resources.categories.check end, __newindex = function(t,k,v) error("Kategorie są tylko do odczytu") end, } setmetatable(result, mt) return result end local categories = createCategories() local function killLinkInterwiki(value) -- usuń z treści wikilinki generowane przez szablon link-interwiki -- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia" local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "") return result end local function softNoWiki(text) local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = "&#x22;", ["'"] = "&#x27;", ["["] = "&#x5B;", ["]"] = "&#x5D;", ["{"] = "&#x7B;", ["|"] = "&#x7C;", ["}"] = "&#x7D;"}) -- przywróc [[szablon:J]] z kursywą tak/nie result, count = string.gsub(result, "<span +style=&#x22;font%-style: ?([a-z]+);?&#x22; +lang=&#x22;([a-z%-]+)&#x22; *>", "<span style=\"font-style: %1;\" lang=\"%2\">") -- przywróc [[szablon:J]] goły result, count = string.gsub(result, "<span +lang=&#x22;([a-z%-]+)&#x22; *>", "<span lang=\"%1\">") -- przywróć nowiki result, count = string.gsub(result, "\127&#x27;&#x22;`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`&#x22;&#x27;\127", "\127'\"`UNIQ--%1-QINU`\"'\127") return result end local function escapeUrl(url) local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"}) return result end local function plainText(text) local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "") return result end local function first(data) return type(data) == "table" and data[1] or data end local function determineMode(p) local detector = {} local count = 0 for i, v in ipairs(resources.modes) do detector[i] = v count = count + 1 end detector[1] = false -- skip 'auto' count = count - 1 for k, v in pairs(resources.params) do local arg = p.args[v.name] for i, w in ipairs(v.used) do if not w and arg then -- unexpected argument if detector[i] then detector[i] = false count = count - 1 if count == 0 then -- the mode cannot be determined break end end end end if count == 0 then -- the mode cannot be determined break end end if count == 1 then for i, v in ipairs(detector) do if detector[i] then return i, resources.COinS[i] end end end if detector[4] -- web? and p.args[resources.params.url.name] then -- promote to web but without COinS return 4, false end for i, v in ipairs(detector) do if detector[i] then -- if type is determined more than once -- use only the first one without COinS return i, false end end -- in case nothing is selected -- use the auto mode as default fallback return 1 end local authorMetatable = {} local authorMethodtable = {} authorMetatable.__index = authorMethodtable local function checkPatterns(author, prefixes, suffixes) if author.exact then return false end if author.prefix and prefixes then for _, v in ipairs(prefixes) do if mw.ustring.match(author.prefix, v) then return true end end end if author.suffix and suffixes then for _, v in ipairs(suffixes) do if mw.ustring.match(author.suffix, v) then return true end end end return false end authorMethodtable.format = function(data, namefirst) if data.exact then return data.exact end if namefirst and data.familynamefirst then namefirst = false end local builder = mw.html.create() local name = data.name and (#data.name > 0) local initials = data.nameinitials and (#data.nameinitials > 0) local namehint = nil if name and initials and (data.name ~= data.nameinitials) then namehint = data.name end if not data.familynamefirst and (name or initials) then local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before") if name then before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end before:wikitext("&nbsp;") end builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname)) if not namefirst and (name or initials) then local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after") after:wikitext("&nbsp;") if name then after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end if data.js then after:wikitext(",") end end if data.js then builder:wikitext("&nbsp;", data.js) end return tostring(builder) end authorMethodtable.towiki = function(data) if data.exact then return data.exact end local result = {} local name = data.name and (#data.name > 0) if not data.familynamefirst and name then table.insert(result,softNoWiki(data.name)) table.insert(result, " ") end table.insert(result, softNoWiki(data.lastname)) if data.familynamefirst and name then table.insert(result, " ") table.insert(result, softNoWiki(data.name)) end return table.concat(result) end local function makeInitials(name) local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h') nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C' nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje return mw.text.trim(nameinitials) end local function fixInitials(name) local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku return result end local function isInQuotes(text) if (string.len(text) < 2) then return false; end local tstart = text:sub(1, 1); if (tstart ~= '"') then return false; end local tend = text:sub(-1); if (tend ~= '"') then return false; end return true; end local function parseAuthor(author) local result = {} if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane result.exact = author setmetatable(result, authorMetatable) return result end local author = mw.text.trim(author) local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", }) if a ~= author then result.exact = a setmetatable(result, authorMetatable) return result end if resources.exactAuthors[author] then result.exact = author setmetatable(result, authorMetatable) return result end local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$") if exactName then result.exact = mw.text.trim(exactName) if #result.exact == 0 then return nil end setmetatable(result, authorMetatable) return result end local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$") if prefix0 then result.link = link author = description else prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$") if prefix0 then author = link result.link = link else prefix0 = "" suffix0 = "" end end local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$") if not prefix1 then rest = author prefix1 = "" end local prefix = mw.text.trim(prefix0.." "..prefix1) if #prefix > 0 then if mw.ustring.sub(prefix, -1) == "#" then result.familynamefirst = true prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$")) end if #prefix > 0 then result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces end end local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$") if not suffix then rest2 = rest suffix = "" end suffix = mw.text.trim(suffix.." "..suffix0) if #suffix > 0 then result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces suffix = " "..result.suffix for i, v in ipairs(resources.js) do if mw.ustring.match(suffix, v[1]) then result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], "")) result.js = v[2] break end end else for i, v in ipairs(resources.js) do if mw.ustring.match(rest2, v[1]) then rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], "")) result.js = v[2] break end end end local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$") if not lastname then if result.familynamefirst then lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$") else local prefix2 name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$") if not resources.lastnamePrefixes[prefix2] then name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$") end end elseif resources.lastnamePrefixes[prefix1] then lastname = prefix1 .. lastname elseif resources.lastnamePrefixes[prefix1] == false then name = name.." "..mw.text.trim(prefix1) end if not lastname then result.lastname = mw.text.trim(rest2) else result.name = fixInitials(name) result.lastname = lastname result.nameinitials = makeInitials(name) end if #result.lastname == 0 then return nil end setmetatable(result, authorMetatable) return result end local function parseDate(date, month, year, patch) local result = {} -- parse full date local y, m, d = false, false, false y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)") if y and patch and (date == (y.."-01-01")) then result.year = tonumber(y) result.month = false result.day = false return result, true end if not y then d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)") if not y then y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)") if not y then d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false d = false end end end end if y then y = tonumber(y) m = tonumber(m) d = tonumber(d) end if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then y = false m = false d = false elseif y then result.year = y result.month = m result.day = d return result, false end -- parse year and month y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)") if not y then m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)") if not y then y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)") if not y then m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false end end end end if y then y = tonumber(y) m = tonumber(m) end if y and ((m > 12) or (m < 1)) then y = false m = false elseif y then result.year = y result.month = m return result, false end -- try any method to extract year or month if not y then y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?") if y then y = tonumber(y) end if y then result.year = y end end if y then if not m then m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?") if m then m = resources.monthparser[mw.ustring.lower(m)] end if m then result.month = m end end else -- reset only month result.month = nil end if y then return result, false end end local function collectAuthors(author, checkForAltFormat) if not author then return end -- Obsługa cudzysłowów w autorach (treat quoted authors as-is) if (isInQuotes(mw.text.trim(author))) then local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ') return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" } end function findUtf8CharAt(text, at) local back = false if at < 0 then at = #text + at + 1 back = true end while at > 1 do local b = string.byte(text, at, at) if (b < 128) or (b >= 192) then break end at = at - 1 end return back and at - #text - 1 or at end local etal = false local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50)) for i, p in ipairs(resources.etalPatterns) do local a, e = string.match(authorTail, p) if a then author = string.sub(author, 1, #author-#e) etal = e break end end function decodeEntity(s) local result = nil local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$") if hex then result = mw.ustring.char(tonumber(hex, 16)) else local dec = string.match(s, "^&#([0-9]+);$") if dec then result = mw.ustring.char(tonumber(dec, 10)) elseif resources.htmlEntities[s] then result = mw.ustring.char(resources.htmlEntities[s]) else return string.gsub(s, ";", "\\:") end end if result == ";" then return "\\:" elseif result == "," then return "\\." elseif result == "\\" then return "\\\\" else return result end end local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1) local result = {} local esc1 = string.gsub(authorHead, "\\", "\\\\") local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity) local splitter = string.match(esc2, ";") and ";" or "," local authors = mw.text.split(esc2, splitter.."%s*", false) local nth = false local count = #authors if (#authorHead < #author) and (count > 4) then if count > 5 then table.remove(authors, count) count = count - 1 end local at, _ = string.find(authorHead, authors[count], 1, true) nth = string.sub(author, at) table.remove(authors, count) count = count - 1 end local alt = false if (splitter == ",") and checkForAltFormat then local altAuthors = {} alt = true for i, v in ipairs(authors) do local n0 = "" local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$") if not s then s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$") end if not s then n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc. end if not s then alt = false break end local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.") if #n0 > 0 then n0 = " "..n0 end table.insert(altAuthors, s..", "..initials..n0) end if alt then authors = altAuthors splitter = ";" end end for i, v in ipairs(authors) do local author = parseAuthor(v) if author then table.insert(result, author) end end if #result == 0 then return end local check = false if alt then check = "alt" elseif (#result == 2) and (splitter == ",") then check = not result[1].link and not result[1].exact and not result[1].name or not result[2].link and not result[2].exact and not result[2].name if check then if result[1].lastname and not result[1].name and not result[2].exact and not mw.ustring.match(result[1].lastname, "%S%s+%S") then local oneAuthor = parseAuthor(author) if oneAuthor then table.remove(result,2) result[1] = oneAuthor check = false end end end if check then mw.logObject(result,"przecinek u autora") end end return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " } end local function formatAuthors(authors, useDecorations, nextgroup, etalForm) local count = #authors.items if count == 0 then return nil, false end local suffix = function(author) if useDecorations then for _, v in ipairs(resources.authorFunc) do if checkPatterns(author, v.prefixes, v.suffixes) then return v.append end end end return "" end local formatter = function(author) local a = author:format(nextgroup) local r = author.link and ("[["..author.link.."|"..a.."]]") or a return r..suffix(author) end if count == 1 then local a1 = formatter(authors.items[1]) local etal = authors.etal and (etalForm or " i inni") or "" return a1..etal, false end local result = {} table.insert(result, formatter(authors.items[1])) if not authors.etal and (count <= 3) then table.insert(result, ", "); table.insert(result, formatter(authors.items[2])) if count == 3 then table.insert(result, ", "); table.insert(result, formatter(authors.items[3])) end return table.concat(result, ""), false end local title = {} for i = 1, count do table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i])) end if authors.more then table.insert(title, authors.more) end table.insert(result, "<span class=\"cite-at-al\" title=\"") table.insert(result, table.concat(title, authors.separator)) if authors.etal then table.insert(result, etalForm or " i inni") end table.insert(result, "\">") table.insert(result, etalForm or " i inni") table.insert(result, "</span>") return table.concat(result, ""), true end local function collectLanguages(value) if value then local result = {} local values = mw.text.split(value, "%s+") for _, v in ipairs(values) do if #v > 0 then table.insert(result, v) end end if #result > 0 then return result end end return nil end local function splitFileLink(link) local linkTitle = string.match(link, "^:(.+)$") if not linkTitle then return link, false end local title = mw.title.new(link) if not title then return link, false end mw.logObject(title.text, "splitFileLink - title.text") if title.namespace == 6 then local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$") if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end elseif #title.interwiki > 0 then local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$") if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end end return link, false end local function splitWikiLink(text) local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$") if link then local name, ext = splitFileLink(link) return description, link, false, ext end local link = mw.ustring.match(text, "^%[%[(.-)%]%]$") if link then local name, ext = splitFileLink(link) return name or link, link, false, ext end local strony_modul=require("Module:Strony"); local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$") if link and strony_modul.SprawdzanieURL(link) then return description, false, link, false end return text, false, false, false end local function detectArchive(url) local uri = mw.uri.new(url) local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]] if detectors then --mw.logObject(uri.host,"detectArchive uri.host") --mw.logObject(uri.relativePath,"detectArchive uri.relativePath") --mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service") for i, v in ipairs(detectors) do local pattern = v.pattern local decoder = resources.archiveDecoders.decoders[v.decoder] if pattern and decoder then local items = { mw.ustring.match(uri.relativePath, pattern) } if #items > 0 then --mw.logObject(items[decoder.link],"detectArchive link") --mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date") return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day] end end end end return false, false end local function isAutoGeneratedUrl(url) local address = string.gsub(url, "^https?:", "") for k, v in pairs(resources.params) do if v.link then local links = type(v.link) == "table" and v.link or { v.link } for _, vlink in ipairs(links) do local prefix = string.gsub(vlink, "^https?:", "") if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then return v.name end end end end return false end local function loadCitation(frame, mode) local result = {} -- map parameters based on: Moduł:Cytuj/dane for k, v in pairs(resources.params) do if v.used[mode] then local value = frame.args[v.name] if value then value = mw.text.trim(value) if #value > 0 then result[k] = value end end if (v.used[mode] == "!") and not result[k] then -- simulate missing mandatory parameter result[k] = "{{{"..v.name.."}}}" if not result.missing then result.missing = v.name end end end end -- check url argument if result.url == "nie" then result.url = false elseif result.url then local strony_modul=require("Module:Strony"); if not strony_modul.SprawdzanieURL(result.url) then local unstrip = mw.text.unstripNoWiki( result.url ) result.url = false if unstrip then result.urlnowiki = strony_modul.SprawdzanieURL(unstrip) end end end -- translate some parameters local altAuthorParser = false if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then altAuthorParser = true end result.chapterauthor = collectAuthors(result.chapterauthor, false) result.author = collectAuthors(result.author, altAuthorParser) result.lang = collectLanguages(result.lang) result.editor = collectAuthors(result.editor, false) result.others = collectAuthors(result.others, false) -- parse main bibliographic date if result.date then local bibDate = false local bibDateHint = false local coinsDate = false local odnDate = false for _, v in ipairs(resources.bibDates) do for _, p in ipairs(v.patterns) do local bib, c = mw.ustring.gsub(result.date, p, v.show) if bib and (c > 0) then bibDate = bib bibDateHint = v.hint if v.coins then local cd, cc = mw.ustring.gsub(result.date, p, v.coins) if cd and (cc > 0) then coinsDate = cd end end if v.odn then local od, oc = mw.ustring.gsub(result.date, p, v.odn) if od and (oc > 0) then odnDate = od end end break end if bibDate then break end end end if bibDate then result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate } else local date, patch = parseDate(result.date or "", false, false, true) if date then date.coins = (patch and date.year) or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day)) or (date.month and string.format("%04d-%02d", date.year, date.month)) or date.year date.odn = date.year elseif result.date then result.badDate = true end result.date = date result.patchCitoidDate = patch end end -- fix other dates if result.accessdate then result.accessdate = parseDate(result.accessdate or "", false, false, false) if result.accessdate and not result.accessdate.day then result.badAccessDate = true result.accessdate = nil elseif not result.accessdate then result.badAccessDate = true end end -- allow more ISBN numbers if result.isbn then -- TODO allow "(info)" for custom description followed each identifier result.isbn = mw.text.split(result.isbn, "%s+") end if result.title then local url result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title) if url or result.titlelink then if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then result.urlWarning = true end result.url = url end end if result.chapter then result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter) end if result.journal then local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ") mw.logObject(journalAbbr, "journalAbbr") if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)] if expandedJournal then result.originalJournal = result.journal result.journal = expandedJournal end end result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal) end if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then result.journalurl = result.url result.url = false end if result.url then local n = isAutoGeneratedUrl(result.url) if n then result.rejectedurl = true if result[n] then result.url = false end end end if result.chapterurl then local n = isAutoGeneratedUrl(result.chapterurl) if n then result.rejectedurl = true if result[n] then result.chapterurl = false end end end if result.journalurl then local n = isAutoGeneratedUrl(result.journalurl) if n then result.rejectedurl = true if result[n] then result.journalurl = false end end end if not result.archive and result.url then local al, ad = detectArchive(result.url) if al then result.archiveurl = true result.archive = result.url result.url = al if ad then result.archived = ad end end elseif not result.archive and result.chapterurl then local al, ad = detectArchive(result.chapterurl) if al then result.archivechapter = true result.archive = result.chapterurl result.chapterurl = al if ad then result.archived = ad end end elseif not result.archive and result.journalurl then local al, ad = detectArchive(result.journalurl) if al then result.archivejournal = true result.archive = result.journalurl result.journalurl = al if ad then result.archived = ad end end elseif result.archive and not result.archived then local al, ad = detectArchive(result.archive) if ad and not result.archived then result.archived = ad end end if result.archive then if result.chapterurl and not result.url then result.archivechapter = true elseif result.title then result.archiveurl = true elseif result.journal then result.archivejournal = true end end if result.archived then result.archived = parseDate(result.archived or "", false, false, false) if result.archived and not result.archived.day then result.badArchivedDate = true result.archived = null elseif not result.archived then result.badArchivedDate = true end end if result.edition and result.journal and not result.volume and not result.issue then local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$"); if volume then result.volume = volume result.issue = issue result.edition = nil end end if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc) end if result.accessKind then result.accessKind = access.choice[result.accessKind] result.unknownAccess = not result.accessKind else result.accessKind = (result.pmc and "open") or access.doi[doiPrefix] or access.journals[result.journal] end if result.doi then result.doi = mw.text.split(result.doi, '%s+', false) for i, v in ipairs(result.doi) do local doiPrefix local doiSuffix doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$") if (doiPrefix == "2307") and not result.jstor then result.jstor = doiSuffix end if not result.accessKind and not result.unknownAccess then result.accessKind = access.doi[doiPrefix] end end end if result.patent then mw.logObject(result.patent,"input:patent") local patentPatterns = mw.loadData("Moduł:Cytuj/patent") local patent = nil local strony_modul=require("Module:Strony"); for _, v in ipairs(patentPatterns) do if string.match(result.patent, v.pattern) then local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1") local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country) local patentInfo = v.info or patentPatterns.ccinfo[patentCountry] if (result.url == nil) and v.url then local url, _ = string.gsub(result.patent, v.pattern, v.url) if strony_modul.SprawdzanieURL(url) then result.url = url end end local patentTitle if v.title then patentTitle, _ = string.gsub(result.patent, v.pattern, v.title) elseif patentInfo then patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber) else patentTitle = patentCountry.." "..patentNumber end patent = { number = patentNumber, application = v.application, country = patentCountry, title = patentTitle, } break end end result.patent = patent mw.logObject(result.patent,"parsed:patent") end -- return collected parameters if there is any for k, v in pairs(result) do return result end -- there are no supported parameters return nil end local function prepareOdnIdentifier(data) if not data.odn or (#data.odn == 0) or (data.odn == "nie") then return nil end data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false if data.odn ~= "tak" and not data.diferentiator then -- TODO return only CITEREF... return data.odn end local authors = data.chapterauthor or data.author or data.editor if not authors then -- required custom identifier return nil end return "CITEREF" .. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "") .. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "") .. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "") .. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "") .. (data.date and data.date.odn or "") .. (data.diferentiator or "") end local function bookCOinS(data) local authors = data.chapterauthor or data.author local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book" if data.chapter and (#data.chapter > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.chapter) result["rft.btitle"] = plainText(data.title) elseif data.work and (#data.work > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.title) result["rft.btitle"] = plainText(data.work) else result["rft.btitle"] = plainText(data.title) result["rft.gengre"] = "book" end if authors then if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.series then result["rft.series"] = data.series end if data.edition then result["rft.edition"] = data.edition end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.isbn then result["rft.isbn"] = data.isbn[1] end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end local coinsData = table.concat(params, "&") return coinsData; end local function journalCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article" result["rft.gengre"] = data.title and gengre or "journal" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.journal) if data.chapter then result["rft.atitle"] = plainText(data.chapter) end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end if data.volume then result["rft.volume"] = data.volume end if data.issue then result["rft.edition"] = data.issue end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function webCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" result["rft.gengre"] = "unknown" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.published) if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function patentCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" if data.title then result["rft.title"] = plainText(data.title) end result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number result["rft.cc"] = data.patent.country if data.date and data.date.coins then result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins end if author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end -- rft.assignee = author (wszyscy?) -- rft.inventor = others (wszyscy?) local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function COinS(data, coinsFormat) if resources.abbrTitles[data.title] then -- full citation is elsewhere return false elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then -- title is mandatory element for books return bookCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then -- journal title is mandatory element for journals return journalCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then return webCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then return patentCOinS(data) elseif data.title and (#data.title > 0) then -- treat web or unrecognized citations as book return bookCOinS(data) else return false end end --[[ Format edition (number or marc 250$a). Different for journal. Tests: Wikipedysta:Nux/test Cytuj wydanie --]] local function formatEdition(edition, journal) local prefix = false if not journal then prefix = true if string.find(edition, "[Ww]yd[a. ]") then prefix = false elseif string.find(edition, "[Ee]dition") then prefix = false end end return (prefix and "wyd. " or "") .. edition end --[[ Main. --]] local function Cite(p, mode, appendText, firewall) -- typ jednostki 2 --local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame; local types; local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}} local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2) if(typ_jednostki=="artykuł")then types="(artykuły)"; elseif(typ_jednostki=="artykuł dla dzieci")then types="(artykuły dla dzieci)"; elseif(typ_jednostki=="strona użytkownika")then types="(strony użytkowników)"; elseif(typ_jednostki=="strona brudnopisu projektu")then types="(strony brudnopisu projektu)"; else types="(strony niepodręcznikowe)"; end; -- debug helper if p.args[3] then mw.log(p.args[3]) end local customMode = mode -- try to determine type basing on passed parameters local coinsFormat = resources.COinS[mode] if not mode then mode, coinsFormat = determineMode(p) end local data = loadCitation(p, mode) if not data then local result = mw.html.create("span") :addClass("problemy") :attr("aria-hidden", "true") :attr("data-nosnippet", "") :attr("data-problemy", "Brak wyników w szablonie cytowania") if mw.title.getCurrentTitle().namespace == 0 then result:wikitext(string.format(categories.empty,types)) end result:wikitext("&#8201;") -- thin space return tostring(result) end -- convert web page to book for old date if (mode == 4) and data.date and data.date.odn then local year = tonumber(data.date.odn) if year and (year < 1990) then mode = 2 end end if data.missing then -- do not produce any COiNS info -- if some mandatory argument is missing coinsFormat = false end local builder = mw.html.create("cite") builder :addClass("citation") :addClass(resources.cite[mode] or nil) :addClass(access.class[data.accessKind]) :attr("id", prepareOdnIdentifier(data)) --:wikitext(access.render[data.accessKind], ' ') local needDot = false local nextAuthorGroup = false if data.title or data.patent then if data.chapter then local authors = data.editor and data.author or data.chapterauthor if authors then local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil) builder:wikitext(list, ", ") nextAuthorGroup = true end local title = softNoWiki(data.chapter) if data.urlstatus == "ukryj" then if data.archivechapter and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.chapterurl then builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']") elseif data.chapterlink then builder:wikitext("[[", data.chapterlink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") end builder:wikitext(", [w:] ") end local authors = false local editor = false if not data.chapter and data.author then authors = data.author else authors = data.editor or data.author editor = data.editor end if authors then local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil) builder:wikitext(list) nextAuthorGroup = true if editor and not etal and not authors.etal then builder:wikitext(" (red.)") end builder:wikitext(", ") end if customMode and data.authorextra then builder:wikitext(data.authorextra, ", ") end if resources.abbrTitles[data.title] then local title = resources.abbrTitles[data.title] builder:wikitext(title) needDot = not mw.ustring.match(title, "%.%]%]$") and not mw.ustring.match(title, "%.$") elseif data.title then local title = softNoWiki(data.title) if data.urlstatus == "ukryj" then if data.archiveurl and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.url or data.archiveurl then builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']") elseif data.titlelink then builder:wikitext("[[", data.titlelink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if not data.chapter and data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") needDot = true elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then needDot = true end local showmediatype = data.mediatype and (#data.mediatype > 0) if showmediatype then builder:wikitext(" &#x5B;", data.mediatype, "&#x5D;") needDot = true end end if not editor and data.editor then local list, etal = formatAuthors(data.editor, false, true, " i inni red.") builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)") needDot = true end if data.others then local list, etal = formatAuthors(data.others, true, true, nil) builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list) needDot = true end if data.patent then local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title) needDot = true end elseif data.journal and data.author then local list, etal = formatAuthors(data.author, false, false, nil) builder:wikitext(list, ", ") end if data.work then builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work) needDot = true end -- web -> [online] if (mode == 4) and not data.mediatype then builder:wikitext(" [online]") end if data.journal and (not data.published or (data.journal ~= data.published)) then builder:wikitext((data.title or data.work) and ", " or "") local title = softNoWiki(data.journal) if data.urlstatus == "ukryj" then if data.archivejournal and data.archive then builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]") else builder:wikitext("„", title, "”") end elseif data.journalurl or data.archivejournal then builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]") elseif data.journallink then builder:wikitext("„[[", data.journallink, "|", title, "]]”") else builder:wikitext("„", title, "”") end needDot = true end if data.responsibility then builder:wikitext(", ", data.responsibility) needDot = true end if data.edition then builder:wikitext(", ", formatEdition(data.edition, data.journal)) needDot = true end if data.volume then builder:wikitext(data.journal and ", " or ", t. ", data.volume) needDot = true end if data.journal and data.issue then builder:wikitext(" (", data.issue, ")") needDot = true end if data.description and (#data.description > 0) then builder:wikitext(", ", data.description) needDot = true end if data.published and not data.publisher then builder:wikitext(", ", data.published) needDot = true end local place = false if data.place then builder:wikitext(", ", data.place) needDot = true place = true end if data.publisher then builder:wikitext(place and ": " or ", ", data.publisher) needDot = true place = false end if data.date then local shortDate = data.journal and (data.doi or data.pmid or data.pmc) if data.date.bib and data.date.hint then builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib) elseif data.date.bib then builder:wikitext(place and " " or ", ", data.date.bib) elseif data.date.day and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.month and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.day then builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year)) elseif data.date.month then builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year)) else builder:wikitext(place and " " or ", ", data.date.year) end builder:wikitext(data.diferentiator or "") needDot = true end if not data.journal and (data.series or data.issue) then builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")") needDot = true elseif data.journal and data.series then builder:wikitext(" (", data.series, ")") needDot = true end if data.p and #data.p > 0 then local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]") builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p) needDot = true end if data.doi then local separator = "&nbsp;" builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:") local doiLink = first(resources.params.doi.link) for _, v in ipairs(data.doi) do builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]") separator = ", " end needDot = true end if data.isbn then for i,v in ipairs(data.isbn) do builder:wikitext(", ") require("Moduł:ISBN").link(builder, v) end needDot = true end if data.lccn then builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]") needDot = true end if data.issn then builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]") needDot = true end if data.pmid then builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]:&nbsp;[", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]") needDot = true end if data.pmc then builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]:&nbsp;[", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]") needDot = true end if data.bibcode then builder:wikitext(", [[w:Bibcode|Bibcode]]:&nbsp;[", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]") needDot = true end if data.oclc then builder:wikitext(", [[w:Online Computer Library Center|OCLC]]&nbsp;[", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]") needDot = true end if data.arxiv then builder:wikitext(", [[arXiv]]:") local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$") if eprint then builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] &#x5B;[//arxiv.org/archive/", class, " ", class, "]&#x5D;" ) else builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" ) end needDot = true end if data.jstor then builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]:&nbsp;[", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]") needDot = true end if data.ol then builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]:&nbsp;[", first(resources.params.ol.link), data.ol, " ", data.ol, "]") needDot = true end if data.id then builder:wikitext(", ", data.id) needDot = true end if data.accessdate then builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]") needDot = true end if data.archive then builder:wikitext(" [zarchiwizowane") if data.urlstatus ~= "ukryj" then local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl) if url then builder:wikitext(" z [", escapeUrl(url), " adresu]") end end if data.archived and data.archived.day then builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day)) end builder:wikitext("]") needDot = true end if data.quotation then builder:wikitext(", Cytat: ", data.quotation) needDot = true end local coinsData = COinS(data, coinsFormat) if coinsData then builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext("&nbsp;") end if data.lang then local languages = require("Moduł:Lang").lang({args = data.lang}) builder:wikitext(" ", languages) needDot = true end if data.fullStop then if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then builder:wikitext(", ") end builder:wikitext(data.fullStop) needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil end if needDot then builder:wikitext(".") end if appendText then builder:wikitext(string.format(appendText,types)) end -- categories local addCategories = mw.title.getCurrentTitle().namespace == 0 local problems = {} if not customMode and (mode == 1) then builder:wikitext(string.format(categories.undetermined,types)) table.insert(problems, "???") end if data.publisher and data.published then table.insert(problems, "p?") if addCategories then table.insert(problems, string.format(categories.unusedPublished,types)) end end if data.journal and data.published and (data.journal == data.published) then table.insert(problems, "j?") if addCategories then table.insert(problems, string.fomat(categories.sameJournalAndPublished,types)) end end if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then builder:addClass(data.urlnowiki and "urlnowiki" or "nourl") end local missing = false local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*") if data.missing then -- usually missing title, this is the first check for mandatory arguments table.insert(problems, data.missing) missing = true elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then -- build in support for missing external link for page citation table.insert(problems, resources.params.url.name) missing = true else -- any other missing value (first catch) for k, v in pairs(resources.params) do if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then table.insert(problems, v.name) missing = true break end end end if missing and addCategories then builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode])) end if (data.chapterauthor and data.chapterauthor.comma) or (data.author and (data.author.comma == true)) or (data.editor and data.editor.comma) or (data.others and data.others.comma) then table.insert(problems, "!!!") if addCategories then builder:wikitext(string.format(categories.suspectedComma,types)) end end if data.author and (data.author.comma == "alt") then table.insert(problems, "a?") if addCategories then builder:wikitext(string.format(categories.altAuthor,types)) end end if data.originalJournal then builder:addClass("c") -- CSS dla lokalizacji w treści if addCategories then builder:wikitext(string.format(categories.altJournal,types)) end end local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia")); local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks")); if citewikipedia or citewikibooks then local justification = false local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {} for i, v in ipairs(acceptedLinks) do justification = (v == data.url) or (v == data.archive) if justification then break end end if not justification then table.insert(problems, "wiki?") if addCategories then if(citewikipedia)then builder:wikitext(string.format(categories.wikipedia,types)) end; if(citewikibooks)then builder:wikitext(string.format(categories.wikibooks,types)) end; end end end if data.unknownAccess then table.insert(problems, "dostęp?") if addCategories then builder:wikitext(string.format(categories.unknownAccess,types)) end end if data.rejectedurl then table.insert(problems, "<s>url</s>") if addCategories then builder:wikitext(string.format(categories.rejectedUrl,types)) end end if data.urlWarning then table.insert(problems, "Url") if addCategories then builder:wikitext(string.format(categories.unusedUrl,types)) end end if data.patchCitoidDate then table.insert(problems, "1 stycznia") end if data.badDate then table.insert(problems, "data?") end if data.badAccessDate then table.insert(problems, "data dostępu?") end if data.badArchivedDate then table.insert(problems, "zarchiwizowano?") end if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then builder:wikitext(string.format(categories.badDate,types)) end if (data.author and data.author.etal) or (data.chapterauthor and data.chapterauthor.etal) or (data.editor and data.editor.etal) or (data.others and data.others.etal) then table.insert(problems, "i inni") if addCategories then builder:wikitext(string.format(categories.etal,types)) end end if firewall then local reportFirewall = function(report) if report then table.insert(problems, report.info) if addCategories and report.cat then local cat = mw.ustring.format(categories.firewall, types, report.cat) builder:wikitext(cat) end end end local reportCommonsFile = function(ext) mw.logObject(ext, "ext") if ext and (firewall.commonsFile[ext] ~= false) then local issue = firewall.commonsFile[ext] or firewall.commonsFile[true] reportFirewall(firewall.reports[issue]) end end if data.url and firewall.url[data.url] ~= false then local uri = mw.uri.new(data.url) local issue = firewall.url[data.url] or firewall.host[uri.host] or firewall.path[uri.relativePath] reportFirewall(firewall.reports[issue]) end reportCommonsFile(data.chapterext) reportCommonsFile(data.titleext) reportCommonsFile(data.journalext) end if #problems > 0 then local info = builder:tag("span") :addClass("problemy") :addClass("problemy-w-cytuj") :attr("aria-hidden", "true") :attr("data-nosnippet", "") info:wikitext(table.concat(problems,", ")) end return builder:done() end local p={}; p.auto = function(frame) return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall")) end; p.custom = function(frame,pf) frame=pf or frame; local traceCategory = false local pagename = mw.title.getCurrentTitle() if (pagename.namespace == 10) and (pf or frame.getParent) then local nazwa_zablonu_rodzica=(pf or frame:getParent()).args["nazwa szablonu przodka"] or (pf or frame:getParent()).args["nazwa szablonu rodzica"]; local pelna_nazwa_zablonu_rodzica=nazwa_zablonu_rodzica and ("Szablon:"..nazwa_zablonu_rodzica) or nil; local template = mw.title.new(pelna_nazwa_zablonu_rodzica or (pf or frame:getParent()):getTitle(), "Szablon" ) if mw.title.compare(template, pagename) == 0 then traceCategory = categories.traceInvokeCustom end end local customMode = frame.args[1] local mode = 1 if customMode then customMode = mw.text.trim(customMode) for i, v in ipairs(resources.modes) do if customMode == v then mode = i break end end end return Cite(frame, mode, traceCategory, null) end; p.custom2=function(frame) return p.custom(frame,frame:getParent()); end; return p; 5hlruf5zuebdw7w02ex2p6fh4sw856f 556532 556519 2026-09-15T08:55:41Z Persino 2851 556532 Scribunto text/plain local resources = mw.loadData("Moduł:Cytuj/dane") local access = mw.loadData("Moduł:Cytuj/dostęp") local function createCategories() local result = {} local mt = { __index = function(t,k) return resources.categories[k] or resources.categories.check end, __newindex = function(t,k,v) error("Kategorie są tylko do odczytu") end, } setmetatable(result, mt) return result end local categories = createCategories() local function killLinkInterwiki(value) -- usuń z treści wikilinki generowane przez szablon link-interwiki -- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia" local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "") return result end local function softNoWiki(text) local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = "&#x22;", ["'"] = "&#x27;", ["["] = "&#x5B;", ["]"] = "&#x5D;", ["{"] = "&#x7B;", ["|"] = "&#x7C;", ["}"] = "&#x7D;"}) -- przywróc [[szablon:J]] z kursywą tak/nie result, count = string.gsub(result, "<span +style=&#x22;font%-style: ?([a-z]+);?&#x22; +lang=&#x22;([a-z%-]+)&#x22; *>", "<span style=\"font-style: %1;\" lang=\"%2\">") -- przywróc [[szablon:J]] goły result, count = string.gsub(result, "<span +lang=&#x22;([a-z%-]+)&#x22; *>", "<span lang=\"%1\">") -- przywróć nowiki result, count = string.gsub(result, "\127&#x27;&#x22;`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`&#x22;&#x27;\127", "\127'\"`UNIQ--%1-QINU`\"'\127") return result end local function escapeUrl(url) local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"}) return result end local function plainText(text) local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "") return result end local function first(data) return type(data) == "table" and data[1] or data end local function determineMode(p) local detector = {} local count = 0 for i, v in ipairs(resources.modes) do detector[i] = v count = count + 1 end detector[1] = false -- skip 'auto' count = count - 1 for k, v in pairs(resources.params) do local arg = p.args[v.name] for i, w in ipairs(v.used) do if not w and arg then -- unexpected argument if detector[i] then detector[i] = false count = count - 1 if count == 0 then -- the mode cannot be determined break end end end end if count == 0 then -- the mode cannot be determined break end end if count == 1 then for i, v in ipairs(detector) do if detector[i] then return i, resources.COinS[i] end end end if detector[4] -- web? and p.args[resources.params.url.name] then -- promote to web but without COinS return 4, false end for i, v in ipairs(detector) do if detector[i] then -- if type is determined more than once -- use only the first one without COinS return i, false end end -- in case nothing is selected -- use the auto mode as default fallback return 1 end local authorMetatable = {} local authorMethodtable = {} authorMetatable.__index = authorMethodtable local function checkPatterns(author, prefixes, suffixes) if author.exact then return false end if author.prefix and prefixes then for _, v in ipairs(prefixes) do if mw.ustring.match(author.prefix, v) then return true end end end if author.suffix and suffixes then for _, v in ipairs(suffixes) do if mw.ustring.match(author.suffix, v) then return true end end end return false end authorMethodtable.format = function(data, namefirst) if data.exact then return data.exact end if namefirst and data.familynamefirst then namefirst = false end local builder = mw.html.create() local name = data.name and (#data.name > 0) local initials = data.nameinitials and (#data.nameinitials > 0) local namehint = nil if name and initials and (data.name ~= data.nameinitials) then namehint = data.name end if not data.familynamefirst and (name or initials) then local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before") if name then before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end before:wikitext("&nbsp;") end builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname)) if not namefirst and (name or initials) then local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after") after:wikitext("&nbsp;") if name then after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name)) end if initials then after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials)) end if data.js then after:wikitext(",") end end if data.js then builder:wikitext("&nbsp;", data.js) end return tostring(builder) end authorMethodtable.towiki = function(data) if data.exact then return data.exact end local result = {} local name = data.name and (#data.name > 0) if not data.familynamefirst and name then table.insert(result,softNoWiki(data.name)) table.insert(result, " ") end table.insert(result, softNoWiki(data.lastname)) if data.familynamefirst and name then table.insert(result, " ") table.insert(result, softNoWiki(data.name)) end return table.concat(result) end local function makeInitials(name) local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h') nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C' nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje return mw.text.trim(nameinitials) end local function fixInitials(name) local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku return result end local function isInQuotes(text) if (string.len(text) < 2) then return false; end local tstart = text:sub(1, 1); if (tstart ~= '"') then return false; end local tend = text:sub(-1); if (tend ~= '"') then return false; end return true; end local function parseAuthor(author) local result = {} if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane result.exact = author setmetatable(result, authorMetatable) return result end local author = mw.text.trim(author) local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", }) if a ~= author then result.exact = a setmetatable(result, authorMetatable) return result end if resources.exactAuthors[author] then result.exact = author setmetatable(result, authorMetatable) return result end local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$") if exactName then result.exact = mw.text.trim(exactName) if #result.exact == 0 then return nil end setmetatable(result, authorMetatable) return result end local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$") if prefix0 then result.link = link author = description else prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$") if prefix0 then author = link result.link = link else prefix0 = "" suffix0 = "" end end local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$") if not prefix1 then rest = author prefix1 = "" end local prefix = mw.text.trim(prefix0.." "..prefix1) if #prefix > 0 then if mw.ustring.sub(prefix, -1) == "#" then result.familynamefirst = true prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$")) end if #prefix > 0 then result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces end end local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$") if not suffix then rest2 = rest suffix = "" end suffix = mw.text.trim(suffix.." "..suffix0) if #suffix > 0 then result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces suffix = " "..result.suffix for i, v in ipairs(resources.js) do if mw.ustring.match(suffix, v[1]) then result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], "")) result.js = v[2] break end end else for i, v in ipairs(resources.js) do if mw.ustring.match(rest2, v[1]) then rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], "")) result.js = v[2] break end end end local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$") if not lastname then if result.familynamefirst then lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$") else local prefix2 name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$") if not resources.lastnamePrefixes[prefix2] then name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$") end end elseif resources.lastnamePrefixes[prefix1] then lastname = prefix1 .. lastname elseif resources.lastnamePrefixes[prefix1] == false then name = name.." "..mw.text.trim(prefix1) end if not lastname then result.lastname = mw.text.trim(rest2) else result.name = fixInitials(name) result.lastname = lastname result.nameinitials = makeInitials(name) end if #result.lastname == 0 then return nil end setmetatable(result, authorMetatable) return result end local function parseDate(date, month, year, patch) local result = {} -- parse full date local y, m, d = false, false, false y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)") if y and patch and (date == (y.."-01-01")) then result.year = tonumber(y) result.month = false result.day = false return result, true end if not y then d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)") if not y then y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)") if not y then d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false d = false end end end end if y then y = tonumber(y) m = tonumber(m) d = tonumber(d) end if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then y = false m = false d = false elseif y then result.year = y result.month = m result.day = d return result, false end -- parse year and month y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)") if not y then m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)") if not y then y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)") if not y then m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)") end if m then m = resources.monthparser[mw.ustring.lower(m)] if not m then y = false m = false end end end end if y then y = tonumber(y) m = tonumber(m) end if y and ((m > 12) or (m < 1)) then y = false m = false elseif y then result.year = y result.month = m return result, false end -- try any method to extract year or month if not y then y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?") if y then y = tonumber(y) end if y then result.year = y end end if y then if not m then m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?") if m then m = resources.monthparser[mw.ustring.lower(m)] end if m then result.month = m end end else -- reset only month result.month = nil end if y then return result, false end end local function collectAuthors(author, checkForAltFormat) if not author then return end -- Obsługa cudzysłowów w autorach (treat quoted authors as-is) if (isInQuotes(mw.text.trim(author))) then local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ') return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" } end function findUtf8CharAt(text, at) local back = false if at < 0 then at = #text + at + 1 back = true end while at > 1 do local b = string.byte(text, at, at) if (b < 128) or (b >= 192) then break end at = at - 1 end return back and at - #text - 1 or at end local etal = false local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50)) for i, p in ipairs(resources.etalPatterns) do local a, e = string.match(authorTail, p) if a then author = string.sub(author, 1, #author-#e) etal = e break end end function decodeEntity(s) local result = nil local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$") if hex then result = mw.ustring.char(tonumber(hex, 16)) else local dec = string.match(s, "^&#([0-9]+);$") if dec then result = mw.ustring.char(tonumber(dec, 10)) elseif resources.htmlEntities[s] then result = mw.ustring.char(resources.htmlEntities[s]) else return string.gsub(s, ";", "\\:") end end if result == ";" then return "\\:" elseif result == "," then return "\\." elseif result == "\\" then return "\\\\" else return result end end local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1) local result = {} local esc1 = string.gsub(authorHead, "\\", "\\\\") local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity) local splitter = string.match(esc2, ";") and ";" or "," local authors = mw.text.split(esc2, splitter.."%s*", false) local nth = false local count = #authors if (#authorHead < #author) and (count > 4) then if count > 5 then table.remove(authors, count) count = count - 1 end local at, _ = string.find(authorHead, authors[count], 1, true) nth = string.sub(author, at) table.remove(authors, count) count = count - 1 end local alt = false if (splitter == ",") and checkForAltFormat then local altAuthors = {} alt = true for i, v in ipairs(authors) do local n0 = "" local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$") if not s then s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$") end if not s then n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc. end if not s then alt = false break end local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.") if #n0 > 0 then n0 = " "..n0 end table.insert(altAuthors, s..", "..initials..n0) end if alt then authors = altAuthors splitter = ";" end end for i, v in ipairs(authors) do local author = parseAuthor(v) if author then table.insert(result, author) end end if #result == 0 then return end local check = false if alt then check = "alt" elseif (#result == 2) and (splitter == ",") then check = not result[1].link and not result[1].exact and not result[1].name or not result[2].link and not result[2].exact and not result[2].name if check then if result[1].lastname and not result[1].name and not result[2].exact and not mw.ustring.match(result[1].lastname, "%S%s+%S") then local oneAuthor = parseAuthor(author) if oneAuthor then table.remove(result,2) result[1] = oneAuthor check = false end end end if check then mw.logObject(result,"przecinek u autora") end end return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " } end local function formatAuthors(authors, useDecorations, nextgroup, etalForm) local count = #authors.items if count == 0 then return nil, false end local suffix = function(author) if useDecorations then for _, v in ipairs(resources.authorFunc) do if checkPatterns(author, v.prefixes, v.suffixes) then return v.append end end end return "" end local formatter = function(author) local a = author:format(nextgroup) local r = author.link and ("[["..author.link.."|"..a.."]]") or a return r..suffix(author) end if count == 1 then local a1 = formatter(authors.items[1]) local etal = authors.etal and (etalForm or " i inni") or "" return a1..etal, false end local result = {} table.insert(result, formatter(authors.items[1])) if not authors.etal and (count <= 3) then table.insert(result, ", "); table.insert(result, formatter(authors.items[2])) if count == 3 then table.insert(result, ", "); table.insert(result, formatter(authors.items[3])) end return table.concat(result, ""), false end local title = {} for i = 1, count do table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i])) end if authors.more then table.insert(title, authors.more) end table.insert(result, "<span class=\"cite-at-al\" title=\"") table.insert(result, table.concat(title, authors.separator)) if authors.etal then table.insert(result, etalForm or " i inni") end table.insert(result, "\">") table.insert(result, etalForm or " i inni") table.insert(result, "</span>") return table.concat(result, ""), true end local function collectLanguages(value) if value then local result = {} local values = mw.text.split(value, "%s+") for _, v in ipairs(values) do if #v > 0 then table.insert(result, v) end end if #result > 0 then return result end end return nil end local function splitFileLink(link) local linkTitle = string.match(link, "^:(.+)$") if not linkTitle then return link, false end local title = mw.title.new(link) if not title then return link, false end mw.logObject(title.text, "splitFileLink - title.text") if title.namespace == 6 then local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$") if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end elseif #title.interwiki > 0 then local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$") if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then return name, ext end end return link, false end local function splitWikiLink(text) local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$") if link then local name, ext = splitFileLink(link) return description, link, false, ext end local link = mw.ustring.match(text, "^%[%[(.-)%]%]$") if link then local name, ext = splitFileLink(link) return name or link, link, false, ext end local strony_modul=require("Module:Strony"); local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$") if link and strony_modul.SprawdzanieURL(link) then return description, false, link, false end return text, false, false, false end local function detectArchive(url) local uri = mw.uri.new(url) local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]] if detectors then --mw.logObject(uri.host,"detectArchive uri.host") --mw.logObject(uri.relativePath,"detectArchive uri.relativePath") --mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service") for i, v in ipairs(detectors) do local pattern = v.pattern local decoder = resources.archiveDecoders.decoders[v.decoder] if pattern and decoder then local items = { mw.ustring.match(uri.relativePath, pattern) } if #items > 0 then --mw.logObject(items[decoder.link],"detectArchive link") --mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date") return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day] end end end end return false, false end local function isAutoGeneratedUrl(url) local address = string.gsub(url, "^https?:", "") for k, v in pairs(resources.params) do if v.link then local links = type(v.link) == "table" and v.link or { v.link } for _, vlink in ipairs(links) do local prefix = string.gsub(vlink, "^https?:", "") if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then return v.name end end end end return false end local function loadCitation(frame, mode) local result = {} -- map parameters based on: Moduł:Cytuj/dane for k, v in pairs(resources.params) do if v.used[mode] then local value = frame.args[v.name] if value then value = mw.text.trim(value) if #value > 0 then result[k] = value end end if (v.used[mode] == "!") and not result[k] then -- simulate missing mandatory parameter result[k] = "{{{"..v.name.."}}}" if not result.missing then result.missing = v.name end end end end -- check url argument if result.url == "nie" then result.url = false elseif result.url then local strony_modul=require("Module:Strony"); if not strony_modul.SprawdzanieURL(result.url) then local unstrip = mw.text.unstripNoWiki( result.url ) result.url = false if unstrip then result.urlnowiki = strony_modul.SprawdzanieURL(unstrip) end end end -- translate some parameters local altAuthorParser = false if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then altAuthorParser = true end result.chapterauthor = collectAuthors(result.chapterauthor, false) result.author = collectAuthors(result.author, altAuthorParser) result.lang = collectLanguages(result.lang) result.editor = collectAuthors(result.editor, false) result.others = collectAuthors(result.others, false) -- parse main bibliographic date if result.date then local bibDate = false local bibDateHint = false local coinsDate = false local odnDate = false for _, v in ipairs(resources.bibDates) do for _, p in ipairs(v.patterns) do local bib, c = mw.ustring.gsub(result.date, p, v.show) if bib and (c > 0) then bibDate = bib bibDateHint = v.hint if v.coins then local cd, cc = mw.ustring.gsub(result.date, p, v.coins) if cd and (cc > 0) then coinsDate = cd end end if v.odn then local od, oc = mw.ustring.gsub(result.date, p, v.odn) if od and (oc > 0) then odnDate = od end end break end if bibDate then break end end end if bibDate then result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate } else local date, patch = parseDate(result.date or "", false, false, true) if date then date.coins = (patch and date.year) or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day)) or (date.month and string.format("%04d-%02d", date.year, date.month)) or date.year date.odn = date.year elseif result.date then result.badDate = true end result.date = date result.patchCitoidDate = patch end end -- fix other dates if result.accessdate then result.accessdate = parseDate(result.accessdate or "", false, false, false) if result.accessdate and not result.accessdate.day then result.badAccessDate = true result.accessdate = nil elseif not result.accessdate then result.badAccessDate = true end end -- allow more ISBN numbers if result.isbn then -- TODO allow "(info)" for custom description followed each identifier result.isbn = mw.text.split(result.isbn, "%s+") end if result.title then local url result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title) if url or result.titlelink then if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then result.urlWarning = true end result.url = url end end if result.chapter then result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter) end if result.journal then local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ") mw.logObject(journalAbbr, "journalAbbr") if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)] if expandedJournal then result.originalJournal = result.journal result.journal = expandedJournal end end result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal) end if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then result.journalurl = result.url result.url = false end if result.url then local n = isAutoGeneratedUrl(result.url) if n then result.rejectedurl = true if result[n] then result.url = false end end end if result.chapterurl then local n = isAutoGeneratedUrl(result.chapterurl) if n then result.rejectedurl = true if result[n] then result.chapterurl = false end end end if result.journalurl then local n = isAutoGeneratedUrl(result.journalurl) if n then result.rejectedurl = true if result[n] then result.journalurl = false end end end if not result.archive and result.url then local al, ad = detectArchive(result.url) if al then result.archiveurl = true result.archive = result.url result.url = al if ad then result.archived = ad end end elseif not result.archive and result.chapterurl then local al, ad = detectArchive(result.chapterurl) if al then result.archivechapter = true result.archive = result.chapterurl result.chapterurl = al if ad then result.archived = ad end end elseif not result.archive and result.journalurl then local al, ad = detectArchive(result.journalurl) if al then result.archivejournal = true result.archive = result.journalurl result.journalurl = al if ad then result.archived = ad end end elseif result.archive and not result.archived then local al, ad = detectArchive(result.archive) if ad and not result.archived then result.archived = ad end end if result.archive then if result.chapterurl and not result.url then result.archivechapter = true elseif result.title then result.archiveurl = true elseif result.journal then result.archivejournal = true end end if result.archived then result.archived = parseDate(result.archived or "", false, false, false) if result.archived and not result.archived.day then result.badArchivedDate = true result.archived = null elseif not result.archived then result.badArchivedDate = true end end if result.edition and result.journal and not result.volume and not result.issue then local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$"); if volume then result.volume = volume result.issue = issue result.edition = nil end end if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc) end if result.accessKind then result.accessKind = access.choice[result.accessKind] result.unknownAccess = not result.accessKind else result.accessKind = (result.pmc and "open") or access.doi[doiPrefix] or access.journals[result.journal] end if result.doi then result.doi = mw.text.split(result.doi, '%s+', false) for i, v in ipairs(result.doi) do local doiPrefix local doiSuffix doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$") if (doiPrefix == "2307") and not result.jstor then result.jstor = doiSuffix end if not result.accessKind and not result.unknownAccess then result.accessKind = access.doi[doiPrefix] end end end if result.patent then mw.logObject(result.patent,"input:patent") local patentPatterns = mw.loadData("Moduł:Cytuj/patent") local patent = nil local strony_modul=require("Module:Strony"); for _, v in ipairs(patentPatterns) do if string.match(result.patent, v.pattern) then local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1") local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country) local patentInfo = v.info or patentPatterns.ccinfo[patentCountry] if (result.url == nil) and v.url then local url, _ = string.gsub(result.patent, v.pattern, v.url) if strony_modul.SprawdzanieURL(url) then result.url = url end end local patentTitle if v.title then patentTitle, _ = string.gsub(result.patent, v.pattern, v.title) elseif patentInfo then patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber) else patentTitle = patentCountry.." "..patentNumber end patent = { number = patentNumber, application = v.application, country = patentCountry, title = patentTitle, } break end end result.patent = patent mw.logObject(result.patent,"parsed:patent") end -- return collected parameters if there is any for k, v in pairs(result) do return result end -- there are no supported parameters return nil end local function prepareOdnIdentifier(data) if not data.odn or (#data.odn == 0) or (data.odn == "nie") then return nil end data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false if data.odn ~= "tak" and not data.diferentiator then -- TODO return only CITEREF... return data.odn end local authors = data.chapterauthor or data.author or data.editor if not authors then -- required custom identifier return nil end return "CITEREF" .. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "") .. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "") .. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "") .. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "") .. (data.date and data.date.odn or "") .. (data.diferentiator or "") end local function bookCOinS(data) local authors = data.chapterauthor or data.author local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book" if data.chapter and (#data.chapter > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.chapter) result["rft.btitle"] = plainText(data.title) elseif data.work and (#data.work > 0) then result["rft.gengre"] = "bookitem" result["rft.atitle"] = plainText(data.title) result["rft.btitle"] = plainText(data.work) else result["rft.btitle"] = plainText(data.title) result["rft.gengre"] = "book" end if authors then if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.series then result["rft.series"] = data.series end if data.edition then result["rft.edition"] = data.edition end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.isbn then result["rft.isbn"] = data.isbn[1] end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end local coinsData = table.concat(params, "&") return coinsData; end local function journalCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article" result["rft.gengre"] = data.title and gengre or "journal" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.journal) if data.chapter then result["rft.atitle"] = plainText(data.chapter) end if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end if data.volume then result["rft.volume"] = data.volume end if data.issue then result["rft.edition"] = data.issue end if data.publisher then result["rft.pub"] = data.publisher end if data.place then result["rft.place"] = data.place end if data.pages then result["rft.pages"] = data.pages end if data.issn then result["rft.issn"] = data.issn end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end if data.doi then for _, v in ipairs(data.doi) do table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v})) end end if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function webCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" result["rft.gengre"] = "unknown" if data.title then result["rft.atitle"] = plainText(data.title) end result["rft.jtitle"] = plainText(data.published) if data.date and data.date.coins then result["rft.date"] = data.date.coins end if data.title and author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function patentCOinS(data) local result = {} result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal" if data.title then result["rft.title"] = plainText(data.title) end result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number result["rft.cc"] = data.patent.country if data.date and data.date.coins then result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins end if author then if author[1].lastname then result["rft.aulast"] = author[1].lastname end if author[1].name then result["rft.aufirst"] = author[1].name end if author[1].exact then result["rft.au"] = author[1].exact end end -- rft.assignee = author (wszyscy?) -- rft.inventor = others (wszyscy?) local params = { "ctx_ver=Z39.88-2004", mw.uri.buildQueryString(result), } if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end local coinsData = table.concat(params, "&") return coinsData; end local function COinS(data, coinsFormat) if resources.abbrTitles[data.title] then -- full citation is elsewhere return false elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then -- title is mandatory element for books return bookCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then -- journal title is mandatory element for journals return journalCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then return webCOinS(data) elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then return patentCOinS(data) elseif data.title and (#data.title > 0) then -- treat web or unrecognized citations as book return bookCOinS(data) else return false end end --[[ Format edition (number or marc 250$a). Different for journal. Tests: Wikipedysta:Nux/test Cytuj wydanie --]] local function formatEdition(edition, journal) local prefix = false if not journal then prefix = true if string.find(edition, "[Ww]yd[a. ]") then prefix = false elseif string.find(edition, "[Ee]dition") then prefix = false end end return (prefix and "wyd. " or "") .. edition end --[[ Main. --]] local function Cite(p, mode, appendText, firewall) -- typ jednostki 2 --local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame; local types; local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}} local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2) if(typ_jednostki=="artykuł")then types="(artykuły)"; elseif(typ_jednostki=="artykuł dla dzieci")then types="(artykuły dla dzieci)"; elseif(typ_jednostki=="strona użytkownika")then types="(strony użytkowników)"; elseif(typ_jednostki=="strona brudnopisu projektu")then types="(strony brudnopisu projektu)"; else types="(strony niepodręcznikowe)"; end; -- debug helper if p.args[3] then mw.log(p.args[3]) end local customMode = mode -- try to determine type basing on passed parameters local coinsFormat = resources.COinS[mode] if not mode then mode, coinsFormat = determineMode(p) end local data = loadCitation(p, mode) if not data then local result = mw.html.create("span") :addClass("problemy") :attr("aria-hidden", "true") :attr("data-nosnippet", "") :attr("data-problemy", "Brak wyników w szablonie cytowania") if mw.title.getCurrentTitle().namespace == 0 then result:wikitext(string.format(categories.empty,types)) end result:wikitext("&#8201;") -- thin space return tostring(result) end -- convert web page to book for old date if (mode == 4) and data.date and data.date.odn then local year = tonumber(data.date.odn) if year and (year < 1990) then mode = 2 end end if data.missing then -- do not produce any COiNS info -- if some mandatory argument is missing coinsFormat = false end local builder = mw.html.create("cite") builder :addClass("citation") :addClass(resources.cite[mode] or nil) :addClass(access.class[data.accessKind]) :attr("id", prepareOdnIdentifier(data)) --:wikitext(access.render[data.accessKind], ' ') local needDot = false local nextAuthorGroup = false if data.title or data.patent then if data.chapter then local authors = data.editor and data.author or data.chapterauthor if authors then local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil) builder:wikitext(list, ", ") nextAuthorGroup = true end local title = softNoWiki(data.chapter) if data.urlstatus == "ukryj" then if data.archivechapter and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.chapterurl then builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']") elseif data.chapterlink then builder:wikitext("[[", data.chapterlink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") end builder:wikitext(", [w:] ") end local authors = false local editor = false if not data.chapter and data.author then authors = data.author else authors = data.editor or data.author editor = data.editor end if authors then local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil) builder:wikitext(list) nextAuthorGroup = true if editor and not etal and not authors.etal then builder:wikitext(" (red.)") end builder:wikitext(", ") end if customMode and data.authorextra then builder:wikitext(data.authorextra, ", ") end if resources.abbrTitles[data.title] then local title = resources.abbrTitles[data.title] builder:wikitext(title) needDot = not mw.ustring.match(title, "%.%]%]$") and not mw.ustring.match(title, "%.$") elseif data.title then local title = softNoWiki(data.title) if data.urlstatus == "ukryj" then if data.archiveurl and data.archive then builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']") else builder:wikitext("''", title, "''") end elseif data.url or data.archiveurl then builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']") elseif data.titlelink then builder:wikitext("[[", data.titlelink, "|''", title, "'']]") else builder:wikitext("''", title, "''") end if not data.chapter and data.format then builder:wikitext(" &#x5B;", data.format, "&#x5D;") needDot = true elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then needDot = true end local showmediatype = data.mediatype and (#data.mediatype > 0) if showmediatype then builder:wikitext(" &#x5B;", data.mediatype, "&#x5D;") needDot = true end end if not editor and data.editor then local list, etal = formatAuthors(data.editor, false, true, " i inni red.") builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)") needDot = true end if data.others then local list, etal = formatAuthors(data.others, true, true, nil) builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list) needDot = true end if data.patent then local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title) needDot = true end elseif data.journal and data.author then local list, etal = formatAuthors(data.author, false, false, nil) builder:wikitext(list, ", ") end if data.work then builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work) needDot = true end -- web -> [online] if (mode == 4) and not data.mediatype then builder:wikitext(" [online]") end if data.journal and (not data.published or (data.journal ~= data.published)) then builder:wikitext((data.title or data.work) and ", " or "") local title = softNoWiki(data.journal) if data.urlstatus == "ukryj" then if data.archivejournal and data.archive then builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]") else builder:wikitext("„", title, "”") end elseif data.journalurl or data.archivejournal then builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]") elseif data.journallink then builder:wikitext("„[[", data.journallink, "|", title, "]]”") else builder:wikitext("„", title, "”") end needDot = true end if data.responsibility then builder:wikitext(", ", data.responsibility) needDot = true end if data.edition then builder:wikitext(", ", formatEdition(data.edition, data.journal)) needDot = true end if data.volume then builder:wikitext(data.journal and ", " or ", t. ", data.volume) needDot = true end if data.journal and data.issue then builder:wikitext(" (", data.issue, ")") needDot = true end if data.description and (#data.description > 0) then builder:wikitext(", ", data.description) needDot = true end if data.published and not data.publisher then builder:wikitext(", ", data.published) needDot = true end local place = false if data.place then builder:wikitext(", ", data.place) needDot = true place = true end if data.publisher then builder:wikitext(place and ": " or ", ", data.publisher) needDot = true place = false end if data.date then local shortDate = data.journal and (data.doi or data.pmid or data.pmc) if data.date.bib and data.date.hint then builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib) elseif data.date.bib then builder:wikitext(place and " " or ", ", data.date.bib) elseif data.date.day and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.month and shortDate then builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year) elseif data.date.day then builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year)) elseif data.date.month then builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year)) else builder:wikitext(place and " " or ", ", data.date.year) end builder:wikitext(data.diferentiator or "") needDot = true end if not data.journal and (data.series or data.issue) then builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")") needDot = true elseif data.journal and data.series then builder:wikitext(" (", data.series, ")") needDot = true end if data.p and #data.p > 0 then local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]") builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p) needDot = true end if data.doi then local separator = "&nbsp;" builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:") local doiLink = first(resources.params.doi.link) for _, v in ipairs(data.doi) do builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]") separator = ", " end needDot = true end if data.isbn then for i,v in ipairs(data.isbn) do builder:wikitext(", ") require("Moduł:ISBN").link(builder, v) end needDot = true end if data.lccn then builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]") needDot = true end if data.issn then builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]") needDot = true end if data.pmid then builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]:&nbsp;[", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]") needDot = true end if data.pmc then builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]:&nbsp;[", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]") needDot = true end if data.bibcode then builder:wikitext(", [[w:Bibcode|Bibcode]]:&nbsp;[", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]") needDot = true end if data.oclc then builder:wikitext(", [[w:Online Computer Library Center|OCLC]]&nbsp;[", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]") needDot = true end if data.arxiv then builder:wikitext(", [[arXiv]]:") local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$") if eprint then builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] &#x5B;[//arxiv.org/archive/", class, " ", class, "]&#x5D;" ) else builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" ) end needDot = true end if data.jstor then builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]:&nbsp;[", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]") needDot = true end if data.ol then builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]:&nbsp;[", first(resources.params.ol.link), data.ol, " ", data.ol, "]") needDot = true end if data.id then builder:wikitext(", ", data.id) needDot = true end if data.accessdate then builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]") needDot = true end if data.archive then builder:wikitext(" [zarchiwizowane") if data.urlstatus ~= "ukryj" then local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl) if url then builder:wikitext(" z [", escapeUrl(url), " adresu]") end end if data.archived and data.archived.day then builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day)) end builder:wikitext("]") needDot = true end if data.quotation then builder:wikitext(", Cytat: ", data.quotation) needDot = true end local coinsData = COinS(data, coinsFormat) if coinsData then builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext("&nbsp;") end if data.lang then local languages = require("Moduł:Lang").lang({args = data.lang}) builder:wikitext(" ", languages) needDot = true end if data.fullStop then if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then builder:wikitext(", ") end builder:wikitext(data.fullStop) needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil end if needDot then builder:wikitext(".") end if appendText then builder:wikitext(string.format(appendText,types)) end -- categories local addCategories = mw.title.getCurrentTitle().namespace == 0 local problems = {} if not customMode and (mode == 1) then builder:wikitext(string.format(categories.undetermined,types)) table.insert(problems, "???") end if data.publisher and data.published then table.insert(problems, "p?") if addCategories then table.insert(problems, string.format(categories.unusedPublished,types)) end end if data.journal and data.published and (data.journal == data.published) then table.insert(problems, "j?") if addCategories then table.insert(problems, string.fomat(categories.sameJournalAndPublished,types)) end end if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then builder:addClass(data.urlnowiki and "urlnowiki" or "nourl") end local missing = false local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*") if data.missing then -- usually missing title, this is the first check for mandatory arguments table.insert(problems, data.missing) missing = true elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then -- build in support for missing external link for page citation table.insert(problems, resources.params.url.name) missing = true else -- any other missing value (first catch) for k, v in pairs(resources.params) do if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then table.insert(problems, v.name) missing = true break end end end if missing and addCategories then builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode])) end if (data.chapterauthor and data.chapterauthor.comma) or (data.author and (data.author.comma == true)) or (data.editor and data.editor.comma) or (data.others and data.others.comma) then table.insert(problems, "!!!") if addCategories then builder:wikitext(string.format(categories.suspectedComma,types)) end end if data.author and (data.author.comma == "alt") then table.insert(problems, "a?") if addCategories then builder:wikitext(string.format(categories.altAuthor,types)) end end if data.originalJournal then builder:addClass("c") -- CSS dla lokalizacji w treści if addCategories then builder:wikitext(string.format(categories.altJournal,types)) end end local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia")); local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org")) or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks")) or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks")) or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks")); if citewikipedia or citewikibooks then local justification = false local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {} for i, v in ipairs(acceptedLinks) do justification = (v == data.url) or (v == data.archive) if justification then break end end if not justification then table.insert(problems, "wiki?") if addCategories then if(citewikipedia)then builder:wikitext(string.format(categories.wikipedia,types)) end; if(citewikibooks)then builder:wikitext(string.format(categories.wikibooks,types)) end; end end end if data.unknownAccess then table.insert(problems, "dostęp?") if addCategories then builder:wikitext(string.format(categories.unknownAccess,types)) end end if data.rejectedurl then table.insert(problems, "<s>url</s>") if addCategories then builder:wikitext(string.format(categories.rejectedUrl,types)) end end if data.urlWarning then table.insert(problems, "Url") if addCategories then builder:wikitext(string.format(categories.unusedUrl,types)) end end if data.patchCitoidDate then table.insert(problems, "1 stycznia") end if data.badDate then table.insert(problems, "data?") end if data.badAccessDate then table.insert(problems, "data dostępu?") end if data.badArchivedDate then table.insert(problems, "zarchiwizowano?") end if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then builder:wikitext(string.format(categories.badDate,types)) end if (data.author and data.author.etal) or (data.chapterauthor and data.chapterauthor.etal) or (data.editor and data.editor.etal) or (data.others and data.others.etal) then table.insert(problems, "i inni") if addCategories then builder:wikitext(string.format(categories.etal,types)) end end if firewall then local reportFirewall = function(report) if report then table.insert(problems, report.info) if addCategories and report.cat then local cat = mw.ustring.format(categories.firewall, types, report.cat) builder:wikitext(cat) end end end local reportCommonsFile = function(ext) mw.logObject(ext, "ext") if ext and (firewall.commonsFile[ext] ~= false) then local issue = firewall.commonsFile[ext] or firewall.commonsFile[true] reportFirewall(firewall.reports[issue]) end end if data.url and firewall.url[data.url] ~= false then local uri = mw.uri.new(data.url) local issue = firewall.url[data.url] or firewall.host[uri.host] or firewall.path[uri.relativePath] reportFirewall(firewall.reports[issue]) end reportCommonsFile(data.chapterext) reportCommonsFile(data.titleext) reportCommonsFile(data.journalext) end if #problems > 0 then local info = builder:tag("span") :addClass("problemy") :addClass("problemy-w-cytuj") :attr("aria-hidden", "true") :attr("data-nosnippet", "") info:wikitext(table.concat(problems,", ")) end return builder:done() end local p={}; p.auto = function(frame) return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall")) end; p.custom = function(frame,pf) local traceCategory = false local pagename = mw.title.getCurrentTitle() if (pagename.namespace == 10) and (pf or frame.getParent) then local nazwa_zablonu_rodzica=(pf or frame:getParent()).args["nazwa szablonu przodka"] or (pf or frame:getParent()).args["nazwa szablonu rodzica"]; local pelna_nazwa_zablonu_rodzica=nazwa_zablonu_rodzica and ("Szablon:"..nazwa_zablonu_rodzica) or nil; local template = mw.title.new(pelna_nazwa_zablonu_rodzica or (pf or frame:getParent()):getTitle(), "Szablon" ) if mw.title.compare(template, pagename) == 0 then traceCategory = categories.traceInvokeCustom end end local customMode = frame.args[1] local mode = 1 if customMode then customMode = mw.text.trim(customMode) for i, v in ipairs(resources.modes) do if customMode == v then mode = i break end end end return Cite(pf or frame, mode, traceCategory, null) end; p.custom2=function(frame) return p.custom(frame,frame:getParent()); end; return p; ef9f1yo8iedp8itkgpzqwpg717pvpu4 Szablon:Cytuj 10 31188 556479 527487 2026-09-15T04:27:09Z Persino 2851 556479 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Cytuj/styles.css" />{{#invoke:Cytuj|{{{funkcja|auto}}}}}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!-- -->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} }}<!-- -->}}<!-- -->{{#if:{{{opis|}}}{{{kropka|}}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}} }} }}<!-- -->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}}}}}<!-- -->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!-- -->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!-- -->{{#if:{{{czasopismo|}}}|<!-- -->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->|{{#if:{{{s|}}}{{{odn|}}}||<!-- -->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> ndjbfn66ek1vgm0hpqwvdeypsx90ozu 556480 556479 2026-09-15T04:29:35Z Persino 2851 556480 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Cytuj/styles.css" />{{#invoke:Cytuj|{{{Funkcja|auto}}}}}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!-- -->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} }}<!-- -->}}<!-- -->{{#if:{{{opis|}}}{{{kropka|}}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}} }} }}<!-- -->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}}}}}<!-- -->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!-- -->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!-- -->{{#if:{{{czasopismo|}}}|<!-- -->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->|{{#if:{{{s|}}}{{{odn|}}}||<!-- -->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> if70zpjg6ax0dv1j3wo05686tpzr5m2 556486 556480 2026-09-15T05:38:04Z Persino 2851 556486 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!-- -->{{#switch:{{{Funkcja|custom}}} |custom={{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom}} |{{#invoke:Cytuj|auto}} }}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!-- -->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} }}<!-- -->}}<!-- -->{{#if:{{{opis|}}}{{{kropka|}}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}} }} }}<!-- -->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}}}}}<!-- -->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!-- -->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!-- -->{{#if:{{{czasopismo|}}}|<!-- -->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->|{{#if:{{{s|}}}{{{odn|}}}||<!-- -->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> dq90rzhx3ui8zfizgwca8kb59clgia7 556487 556486 2026-09-15T05:38:50Z Persino 2851 556487 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!-- -->{{#switch:{{{Funkcja|custom}}} |custom={{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom}} |{{#invoke:Cytuj|auto}} }}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!-- -->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=|adres=}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} }}<!-- -->}}<!-- -->{{#if:{{{opis|}}}{{{kropka|}}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}} }} }}<!-- -->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}}}}}<!-- -->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!-- -->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!-- -->{{#if:{{{czasopismo|}}}|<!-- -->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->|{{#if:{{{s|}}}{{{odn|}}}||<!-- -->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> lrqqeyuvjs0h3sl8f9hz8afucm9h2st 556503 556487 2026-09-15T06:53:02Z Persino 2851 556503 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!-- -->{{#switch:{{{Funkcja|custom}}} |custom={{#invoke:Cytuj|custom2}} |{{#invoke:Cytuj|auto}} }}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!-- -->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=|adres=}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} }}<!-- -->}}<!-- -->{{#if:{{{opis|}}}{{{kropka|}}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}} }} }}<!-- -->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}}}}}<!-- -->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!-- -->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!-- -->{{#if:{{{czasopismo|}}}|<!-- -->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->|{{#if:{{{s|}}}{{{odn|}}}||<!-- -->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> luiij9g8s9i5fc9mihdskq8pdlw2dgi 556528 556503 2026-09-15T08:37:25Z Persino 2851 556528 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!-- -->{{#switch:{{{Funkcja|auto}}} |custom={{#invoke:Cytuj|custom2}} |#default|auto={{#invoke:Cytuj|auto}} }}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!-- -->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=|adres=}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} }}<!-- -->}}<!-- -->{{#if:{{{opis|}}}{{{kropka|}}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}} }} }}<!-- -->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}}}}}<!-- -->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!-- -->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!-- -->{{#if:{{{czasopismo|}}}|<!-- -->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->|{{#if:{{{s|}}}{{{odn|}}}||<!-- -->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> t0soxaxc4ksuxtpveh8tmiujj2b23tp 556530 556528 2026-09-15T08:41:58Z Persino 2851 556530 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!-- -->{{#switch:{{{Funkcja|auto}}} |custom2={{#invoke:Cytuj|custom2}} |custom={{#invoke:Cytuj|custom}} |#default|auto={{#invoke:Cytuj|auto}} }}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!-- -->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=|adres=}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}} }}<!-- -->}}<!-- -->{{#if:{{{opis|}}}{{{kropka|}}} |{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}} }} }}<!-- -->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}}}}}<!-- -->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!-- -->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}} }}<!-- -->}}<!-- -->}}<!-- -->}}<!-- -->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!-- -->{{#if:{{{czasopismo|}}}|<!-- -->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!-- -->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->|{{#if:{{{s|}}}{{{odn|}}}||<!-- -->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!-- -->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}} |artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}} |artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}} |strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}} |strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}} |#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}} }}<!-- -->}}<!-- -->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> p7srlfn0065jhikepm9ufm9h63bchjt Moduł:Sprawdź 828 31189 556500 552398 2026-09-15T06:43:32Z Persino 2851 556500 Scribunto text/plain return { ["NazwaKategoriiSprawdzaniaParametrówSzablonu"]=function() return "Szablony z dodatkową opcją sprawdzania parametrów"; end; ["UsuńKategorięSprawdzaniaParametrówSzablonu"]=function(frame) local wikikod=frame.args[1]; local sprawdz_modul=require("Module:Sprawdź"); local kategoria_sprawdzania_parametrow=sprawdz_modul["NazwaKategoriiSprawdzaniaParametrówSzablonu"](); local specjalne_modul=require("Module:Specjalne"); return specjalne_modul["UsuńŚciśleOkreśloneKategorie"]{[1]=wikikod,[2]=kategoria_sprawdzania_parametrow,} end; ["Porównaj"] = function(frame) local pf=frame:getParent(); local config = pf.args[""] or "" local brudnopis=pf.args["brudnopis"]; local options = mw.text.split(config, "|") local templateName = mw.text.trim(options[1]) if #templateName == 0 then local title = mw.title.getCurrentTitle() if title.namespace == 10 then templateName = mw.ustring.match(title.text, "^(.-)/opis") or mw.ustring.match(title.text, "^(.-)/test") or mw.ustring.match(title.text, "^(.-)/brudnopis") or title.text end if #templateName == 0 then mw.log("brak nazwy szablonu") return end end local i = 2 local showparams = true local showinfo = true local vertical = false local brudnopis; while i <= #options do local parametr,wartosc=mw.ustring.match(options[i],"^([^%=]*)%=(.*)$") if(not parametr)then local option = mw.text.trim(options[i]) if option == "bez wikikodu" then showparams = false elseif option == "bez opisu" then showinfo = false elseif option == "pionowo" then vertical = true end else local parametr=mw.text.trim(parametr) if(parametr=="brudnopis")then brudnopis=mw.text.trim(wartosc); end; end i = i + 1 end; local templateTitle = mw.title.new(templateName, 10) if templateTitle.id == 0 then mw.log("szablon '"..templateName.."' nie istnieje") return end local sandboxName = brudnopis or (templateName.."/brudnopis") local sandboxTitle = mw.title.new(sandboxName, 10) if sandboxTitle.id == 0 then mw.log("brudnopis '"..sandboxName.."' nie istnieje") return end local templateParams = {} local params = {} for k, v in pairs(pf.args) do if (k ~= "") then templateParams[k] = v table.insert(params, k) end end local result = {} table.insert(result, '<table style="width: 100%;">') if showparams and (#params > 0) then local compare = function(a, b) -- return a < b if (type(a) == "number") and (type(b) == "number") then return a < b end if (type(a) == "string") and (type(b) == "string") then return a < b end if (type(a) == "number") and (type(b) == "string") then return true end return false end table.sort(params, compare) table.insert(result, "<caption><code>&#x7B;&#x7B;") table.insert(result, templateName) for i, k in ipairs(params) do table.insert(result, " &#x7C; ") local p = mw.text.nowiki(tostring(k)) local v = mw.text.nowiki(templateParams[k]) table.insert(result, p) table.insert(result, " = ") table.insert(result, v) end table.insert(result, "&#x7D;&#x7D;</code></caption>") end local templateResult = frame:expandTemplate{ title=templateName, args=templateParams} local sandboxResult = frame:expandTemplate{ title=sandboxName, args=templateParams} if templateResult and string.match(templateResult, "^{|") then templateResult = "\n"..templateResult end if sandboxResult and string.match(sandboxResult, "^{|") then sandboxResult = "\n"..sandboxResult end if vertical and showinfo then table.insert(result, '<tr><th style="width: 15em">[[Szablon:') table.insert(result, templateName) table.insert(result, '|Szablon]]</th><td>') table.insert(result, templateResult) table.insert(result, '</td></tr><tr><th>[[Szablon:') table.insert(result, sandboxName) table.insert(result, '|Brudnopis szablonu]]</th><td>') table.insert(result, sandboxResult) table.insert(result, '</td></tr>') elseif vertical then table.insert(result, '<tr><td>') table.insert(result, templateResult) table.insert(result, '</td></tr><tr><td>') table.insert(result, sandboxResult) table.insert(result, '</td></tr>') else if showinfo then table.insert(result, '<tr><th style="width: 50%;">[[Szablon:') table.insert(result, templateName) table.insert(result, '|Szablon]]</th><th style="width: 50%;">[[Szablon:') table.insert(result, sandboxName) table.insert(result, '|Brudnopis szablonu]]</th></tr>') end table.insert(result, '<tr style="vertical-align: top;"><td>') table.insert(result, templateResult) table.insert(result, '</td><td>') table.insert(result, sandboxResult) table.insert(result, '</td></tr>') end table.insert(result, "</table>") return table.concat(result) end, ["Parametry"] = function(frame) local pf=frame:getParent(); local unknown = {} local invalid = {} local deprecated = {} local nakedurl = {} local exturl = {} local files = {}; local templateName; local function argName(arg) local span = mw.html.create('span'); span:css('white-space','pre'); span:wikitext(arg); return type(arg) ~= "string" and tostring(arg) or ('"'..tostring(span:allDone())..'"'); end local parametry_modul=require("Module:Parametry"); local dodatkowe_elementy=pf.args["dodatkowe parametry"]; local tablica_dodatkowe_elementy; if(parametry_modul.CzyTak(dodatkowe_elementy))then tablica_dodatkowe_elementy={}; local __tablica_dodatkowe_elementy=mw.text.split(dodatkowe_elementy,";;",false); for _,value in ipairs(__tablica_dodatkowe_elementy)do local tab_dwoch_element=mw.text.split(value,"=",false); if((tab_dwoch_element[1])and(tab_dwoch_element[2]))then tablica_dodatkowe_elementy[mw.text.trim(tab_dwoch_element[1])]=mw.text.trim(tab_dwoch_element[2]); end; end; end; local ramka_modul=require("Module:Ramka"); local tabelka1=ramka_modul.RozpakujArgumenty(frame.args["bez argumentów szablonu"]); local tabelka2=ramka_modul.RozpakujArgumenty(pf.args["bez argumentów szablonu"]); local tabelka_bez_argumentow=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2) local required = {}; local repeated = {}; local konieczne = {}; local empty = {}; local noempty = {}; local sprawdz_modul=mw.loadData("Module:Sprawdź/dane"); local tabelka_argumentow_systemowych_funkcji=sprawdz_modul.tabelka_argumentow_systemowych_funkcji; local tabelka_argumentow_dodatkowych_funkcji=sprawdz_modul.tabelka_argumentow_dodatkowych_funkcji; local tabelka_argumentow_systemowych_szablonu=sprawdz_modul.tabelka_argumentow_systemowych_szablonu; local tabelka_argumentowa_ramki_szablon=sprawdz_modul.tabelka_argumentowa_ramki_szablon; local tabelka_parametrow_rodzica={}; local parametry_rodzica=parametry_modul.CzyTak(pf.args["potomek"])and pf.args["parametry rodzica"]; local szablonowe_modul=require("Module:Szablonowe"); if(parametry_rodzica)then tabelka_parametrow_rodzica=ramka_modul.RozpakujParametry(parametry_rodzica); templateName=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle()); else tabelka_parametrow_rodzica=pf.args; templateName=szablonowe_modul.NazwaSzablonu(pf:getTitle()); end; local czy_dokumentacja=((parametry_modul.CzyTak(frame.args["dokumentacja"])) or (parametry_modul.CzyTak(tabelka_parametrow_rodzica["dokumentacja"]))); if(czy_dokumentacja)then return;end; local czy_dodaj_parametry_pudelka=parametry_modul.CzyTak(frame.args["dodaj parametry pudełka"]); if(czy_dodaj_parametry_pudelka)then--dodaje parametry pudełka tabelka_argumentow_systemowych_szablonu["parametry pudełka"]=""; tabelka_argumentow_systemowych_szablonu["bez błędu"]=""; tabelka_argumentow_systemowych_szablonu["bez szczegółów"]=""; --dodaje parametry nienazwane i dla parametru: 1, którego ewentualną pierwszą nazwą jest: cel-- local maksimum=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabelka_parametrow_rodzica); for i=1,maksimum,1 do if(i>1)then tabelka_argumentow_systemowych_szablonu[i]="txt!"; else tabelka_argumentow_systemowych_szablonu[1]="txt!;cel"; end; end; tabelka_argumentow_systemowych_szablonu["cel"]="txt!;1" end; local tablica_mikroszablonow={ ["{{+}}"]=";", ["{{!+}}"]="^", ["{{+!}}"]="$", }; tabelka_bez_argumentow=parametry_modul["UsuńElementyTabeli"](tabelka_bez_argumentow,tabelka_argumentow_systemowych_funkcji); tabelka_bez_argumentow=parametry_modul["UsuńElementyTabeli"](tabelka_bez_argumentow,tabelka_argumentow_systemowych_szablonu); tabelka_bez_argumentow=parametry_modul["UsuńElementyTabeli"](tabelka_bez_argumentow,tabelka_argumentowa_ramki_szablon); local zmienna_sprawdzania_parametrow=pf.args["zmienna sprawdzania parametrów"]; local zmienne_dodane={}; if(zmienna_sprawdzania_parametrow)then local tabelka_zmiennych=mw.text.split(zmienna_sprawdzania_parametrow,";;",false); for poz,war in ipairs(tabelka_zmiennych)do local zmienna,wartosc=mw.ustring.match(war,"^%s*(.+)%s*=%s*(.*)%s*$") if((zmienna)and(wartosc))then zmienna=mw.text.trim(zmienna); wartosc=mw.text.trim(wartosc); zmienne_dodane[tonumber(zmienna) or mw.ustring.gsub(zmienna,"{{[^{}]+}}",tablica_mikroszablonow)]=wartosc; end; end; end; local zmienne_konieczne=function(tab,czy_odjete) for k, v in pairs(tab)do if(czy_odjete or ((not tabelka_argumentow_systemowych_funkcji[k]) and(not tabelka_argumentowa_ramki_szablon[k]) and (not tabelka_argumentow_systemowych_szablonu[k]) and (not tabelka_bez_argumentow[k]) ) )then local wydziel=mw.ustring.match(v,"^%s*(^.*$%s*%??%s*!?)%s*"); if wydziel and mw.ustring.match(wydziel, "!%s*$") then required[k] = true elseif mw.ustring.match(mw.ustring.match(v,"^([^;]*!?)%s*"), "!%s*$") then required[k] = true end end; end; end; zmienne_konieczne(frame.args,false); zmienne_konieczne(zmienne_dodane,true); zmienne_konieczne(tabelka_argumentow_systemowych_funkcji,true); zmienne_konieczne(tabelka_argumentow_systemowych_szablonu,true); zmienne_konieczne(tabelka_argumentowa_ramki_szablon,true); local emptyArg = false local Kind=function(k,kind) if(not kind)then return;end; if(tablica_dodatkowe_elementy)then local element=tablica_dodatkowe_elementy[k]; return kind..(element and (";"..element) or ""); end; return kind; end; local tab={}; local tab_ogolne={}; local obslugiwane=function(k) if(tab_ogolne[k])then local tab_szczegolne=tab_ogolne[k]; return tab_szczegolne[1],tab_szczegolne[2],tab_szczegolne[3]; end; local kind=(not tabelka_argumentow_dodatkowych_funkcji[k]) and ((not tabelka_bez_argumentow[k]) and (tabelka_argumentow_systemowych_funkcji[k] or tabelka_argumentowa_ramki_szablon[k] or tabelka_argumentow_systemowych_szablonu[k] or zmienne_dodane[k] or frame.args[k]) or nil ) or nil; kind=Kind(k,kind); local zapytajnik; local wykrzyknik; if (kind) then local kind2;local zmienne; kind2,zapytajnik,wykrzyknik,zmienne=mw.ustring.match(kind,"^%s*(!?^.*$)%s*(%??)%s*(!?)%s*;%s*(.-)%s*$"); if((not kind2)or(not zmienne)or (not zapytajnik))then kind2,zapytajnik,wykrzyknik,zmienne=mw.ustring.match(kind,"^%s*(!?^.*$%s*%+[^;]-)%s*(%??)%s*(!?)%s*;%s*(.-)%s*$"); if((not kind2)or(not zmienne)or (not zapytajnik))then kind2,zapytajnik,wykrzyknik,zmienne=mw.ustring.match(kind,"^%s*([^;]-%s*%+%s*!?^.*$)%s*(%??)%s*(!?)%s*;%s*(.-)%s*$"); if((not kind2)or(not zmienne)or (not zapytajnik))then kind2,zapytajnik,wykrzyknik,zmienne=mw.ustring.match(kind,"^%s*([^;]-)%s*(%??)%s*(!?)%s*;%s*(.-)%s*$"); end; end; end; if((kind2)and(zmienne))then local tab2=mw.text.split(mw.text.trim(zmienne),"%s*;%s*",false); tab[k]={}; for _,value in ipairs(tab2) do value=mw.text.trim(value); local indeks=tonumber(value) or mw.ustring.gsub(value,"{{[^{}]+}}",tablica_mikroszablonow); local indeks2,wykrzyknik=mw.ustring.match(tostring(indeks),"^%s*(.*)%s*(!!?)%s*$"); local indeks3,zapytajnik=mw.ustring.match(tostring(indeks2 or indeks),"^%s*(.*)%s*(%?)%s*$"); local inne,indeks4=mw.ustring.match(tostring(indeks3 or indeks2 or indeks),"^%s*(!)%s*(.*)%s*$"); tab[k][indeks4 or indeks3 or indeks2 or indeks]={((not inne) and true or false), ((not wykrzyknik) and true or false), ((not zapytajnik) and true or false), ((not (wykrzyknik=="!!")) and true or false), }; end; kind=mw.ustring.gsub(kind2,"{{[^{}]+}}",tablica_mikroszablonow); else kind2,zapytajnik,wykrzyknik=mw.ustring.match(kind,"^%s*(!?%s*^.*$)%s*(%??)%s*(!?)%s*$"); if(not kind2)or(not zapytajnik)then kind2,zapytajnik,wykrzyknik=mw.ustring.match(kind,"^%s*(.-)%s*(%??)%s*(!?)%s*$"); end; kind=mw.ustring.gsub(kind2,"{{[^{}]+}}",tablica_mikroszablonow); end; end; kind=kind and mw.text.trim(kind); tab_ogolne[k]={kind,wykrzyknik,zapytajnik,}; return kind,wykrzyknik,zapytajnik; end; local function inne_elementy_nieobslugiwane(k) local element=tab[k] if(element)then for name2, wartosc in pairs(element)do if(name2~=k)then if(not wartosc[1])then if(not wartosc[2] and not wartosc[3])then if((obslugiwane(name2))and(tabelka_parametrow_rodzica[name2]) and(((wartosc[4])and (#tabelka_parametrow_rodzica[name2]>0) )or((not wartosc[4])and(#tabelka_parametrow_rodzica[name2]==0))) )then return true; end; elseif(not wartosc[2] and wartosc[3])then return true; elseif(wartosc[2] and not wartosc[3])then if((obslugiwane(name2))and( (not tabelka_parametrow_rodzica[name2]) or(tabelka_parametrow_rodzica[name2])and(#tabelka_parametrow_rodzica[name2]==0)) )then return true; end; end; end; end; end; end; return false; end; local function inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(k,tak) local element=tab[k]; if(element)then for name2, wartosc in pairs(element)do if(name2~=k)then if(wartosc[1])then if(wartosc[2])then if(not wartosc[3])then if((obslugiwane(name2))and(tabelka_parametrow_rodzica[name2]))then if(#tabelka_parametrow_rodzica[name2]>0)then if(tak)then if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then return true; end; else return true; end; end; end; elseif((obslugiwane(name2))and(tabelka_parametrow_rodzica[name2]))then return true; end; end; end; end; end; else local kind=obslugiwane(k); end; return false; end; local tab_konieczne_puste={}; local function inne_elementy_konieczne(k) local element=tab[k] if(element)then for name2,wartosc in pairs(element)do if(name2~=k)then if(obslugiwane(name2))then if((wartosc[1])and(not wartosc[2])and(wartosc[3]))then if(not tabelka_parametrow_rodzica[name2])then table.insert(tab_konieczne_puste,argName(tonumber(name2) or name2)); return true; end; elseif((wartosc[1])and(not wartosc[2])and(not wartosc[3]))then if(not tabelka_parametrow_rodzica[name2])then if(not inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then return true; end; elseif(#tabelka_parametrow_rodzica[name2]>0)then if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then return true; end; end; end; end; end; end; end; return false; end; local function inne_elementy_z_mozliwymi_koniecznymi_niepustymi_wartosciami(k) local element=tab[k]; if(element)then local tak=false; for name2, wartosc in pairs(element)do if(name2~=k)then if(wartosc[1])then if((wartosc[4])and(not wartosc[2])and(not wartosc[3]))then if(obslugiwane(name2))then if( (not tabelka_parametrow_rodzica[name2]) or(#tabelka_parametrow_rodzica[name2]==0) )then if(not inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then return true; end; --elseif((tabelka_parametrow_rodzica[name2]))and(#tabelka_parametrow_rodzica[name2]>0)then --if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then --return true; --end; end; end; end; end; end; end; end; return false; end; local function inne_elementy_z_mozliwymi_koniecznymi_pustymi_wartosciami(k) local element=tab[k]; local czy=false; if(element)then for name2, wartosc in pairs(element)do if(name2~=k)then if(wartosc[1])then if((not wartosc[4])and(not wartosc[2])and(not wartosc[3]))then if((obslugiwane(name2))and( (not tabelka_parametrow_rodzica[name2]) or((tabelka_parametrow_rodzica[name2])and(#tabelka_parametrow_rodzica[name2]>0)) ))then return true; end; end; end; end; end; end; return czy; end; local strony_modul=require("Module:Strony"); local NumerPlik=function(k,v,zapytajnik,tryb) local czy_zapytajnik=(zapytajnik~="?"); local zero=(czy_zapytajnik and(#v==0)); if(zero)then table.insert(invalid, argName(k)); elseif((czy_zapytajnik)or((not czy_zapytajnik)and(#v~=0)))then local u=strony_modul.SprawdzanieRozmiaruPliku{rozmiar=v,tryb=tryb,}; if not u then table.insert(invalid,argName(k)) end; end; end; local GrafikaPlik=function(k,v,zapytajnik,przestrzen) local czy_zapytajnik=(zapytajnik~="?"); local zero=(czy_zapytajnik and(#v==0)); if(zero)then table.insert(invalid, argName(k)) elseif((czy_zapytajnik)or((not czy_zapytajnik)and(#v~=0)))then if strony_modul.ZnajdowanieNormalnychStronHttp(v) then table.insert(nakedurl, argName(k)) else local g = strony_modul.SprawdzanieNazwyPlikowe{nazwa = v, ["przestrzeń"]=przestrzen, }; if not g then table.insert(invalid, argName(k)) end end; end; end; for k, v in pairs(tabelka_parametrow_rodzica) do required[k] = false; local kind,wykrzyknik,zapytajnik=obslugiwane(k) if k == "" then emptyArg = v elseif not kind or inne_elementy_nieobslugiwane(k) then table.insert(unknown, argName(k)) elseif inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(k,true) then table.insert(repeated, argName(k)); elseif (inne_elementy_z_mozliwymi_koniecznymi_niepustymi_wartosciami(k)) then table.insert(empty, k); elseif (inne_elementy_z_mozliwymi_koniecznymi_pustymi_wartosciami(k) ) then table.insert(noempty, k); elseif inne_elementy_konieczne(k) then table.insert(konieczne, k); else local old,__kind=mw.ustring.match(kind,"^%s*(old)%s*%+%s*(.-)%s*$"); if(not old or not __kind)then __kind,old=mw.ustring.match(kind,"^%s*(.-)%s*%+%s*(old)%s*$"); end; if(old and __kind)then table.insert(deprecated, argName(k)); kind=__kind; end; if(kind == "")then -- Kod pusty elseif (kind == "num") then if(zapytajnik~="?")then local n = tonumber(v) if not n then table.insert(invalid, argName(k)) end else local n = (#v == 0) or tonumber(v) if not n then table.insert(invalid, argName(k)) end end; elseif (kind == "uri") then if(zapytajnik~="?")then local u = strony_modul.SprawdzanieURL(v) if not u then table.insert(invalid, argName(k)) end else local u = (#v == 0) or strony_modul.SprawdzanieURL(v) if not u then table.insert(invalid, argName(k)) end end; elseif(kind=="txt")then if(zapytajnik~="?")then if #v == 0 then table.insert(invalid, argName(k)) end; end; elseif (kind=="all")then local zero=((zapytajnik~="?")and(#v==0)); if(zero)then table.insert(invalid, argName(k)); else local u = strony_modul.SprawdzanieURL(v); if u then table.insert(nakedurl, argName(k)) else local u = strony_modul.ZnajdowanieNormalnychStronHttp(v); if(u)then table.insert(nakedurl, argName(k)) end; end; end; elseif(kind=="grafika")then GrafikaPlik(k,v,zapytajnik,false); elseif(kind=="grafika*")then GrafikaPlik(k,v,zapytajnik,true); elseif (kind == "text") then local zero=((zapytajnik~="?")and(#v==0)); if(zero)then table.insert(invalid, argName(k)) else local u= strony_modul.ZnajdowaniePlikowe(v); if(u)then table.insert(files, argName(k)) else local u = strony_modul.SprawdzanieURL(v); if u then table.insert(nakedurl, argName(k)) else local u = strony_modul.ZnajdowanieNormalnychStronHttp(v); if(u)then table.insert(nakedurl, argName(k)) else local u = strony_modul.ZnajdowanieJakikolwiekStronHttp(v) if(u)then table.insert(exturl, argName(k)) end; end; end; end; end; elseif(kind == "text-img")then local zero=((zapytajnik~="?")and(#v==0)); if(zero)then table.insert(invalid, argName(k)) else local u = strony_modul.SprawdzanieURL(v); if u then table.insert(nakedurl, argName(k)) else local u = strony_modul.ZnajdowanieNormalnychStronHttp(v); if(u)then table.insert(nakedurl, argName(k)) else local u = strony_modul.ZnajdowanieJakikolwiekStronHttp(v) if(u)then table.insert(exturl, argName(k)) end; end; end; end; elseif((kind == "text-link")or(kind == "tekst"))then local zero=((zapytajnik~="?")and(#v==0)); if(zero)then table.insert(invalid, argName(k)) else local u= strony_modul.ZnajdowaniePlikowe(v); if(u)then table.insert(files, argName(k)) else local u = strony_modul.SprawdzanieURL(v); if u then table.insert(nakedurl, argName(k)) else local u = strony_modul.ZnajdowanieNormalnychStronHttp(v); if(u)then table.insert(nakedurl, argName(k)) end; end; end; end; elseif ((not old)and(kind == "old")) then table.insert(deprecated, argName(k)); elseif(kind == "uri*")then local zero=((zapytajnik~="?")and(#v==0)); if(zero)then table.insert(invalid, argName(k)) else local u = strony_modul.SprawdzanieURL(v) or strony_modul.SprawdzanieURL(mw.text.unstripNoWiki(v)) if not u then table.insert(invalid, argName(k)) end end; elseif(kind=="rozmiar")then NumerPlik(k,v,zapytajnik,false); elseif(kind=="rozmiar*")then NumerPlik(k,v,zapytajnik,true); elseif(kind~="")then local function regex(kind) local tab_pattern_wykrzyknik_lub_nie_wzorow={}; local pattern_poczatek=kind; local function funkcja_zbierajacy_dane_patternow(pattern_analiza_wzorow_koniunkcji) local tab_split_pattern_koniunkcji={}; local pattern_poczatek=pattern_analiza_wzorow_koniunkcji; repeat local pattern_poczatek_2,pattern_koniec=mw.ustring.match(pattern_poczatek,"^%s*(!?%s*^.-$)%s*&%s*(.*)%s*$"); if(pattern_poczatek_2 and pattern_koniec)then table.insert(tab_split_pattern_koniunkcji,pattern_poczatek_2); pattern_poczatek=pattern_koniec; else local pattern_caly=mw.ustring.match(pattern_poczatek,"^%s*(!?%s*^.-$)%s*$"); if pattern_caly then table.insert(tab_split_pattern_koniunkcji,pattern_caly); end; end; until not pattern_poczatek_2; local tab_pattern_wykrzyknik_lub_nie_wzorow_koniunkcji={}; for _,wartosc_elementu_koniunkcji in ipairs(tab_split_pattern_koniunkcji)do local wykrzyknik,pattern=mw.ustring.match(wartosc_elementu_koniunkcji,"^%s*(!?)%s*(^.-$)%s*$"); table.insert(tab_pattern_wykrzyknik_lub_nie_wzorow_koniunkcji,{[1]=pattern,[2]=wykrzyknik}); end; table.insert(tab_pattern_wykrzyknik_lub_nie_wzorow,tab_pattern_wykrzyknik_lub_nie_wzorow_koniunkcji); end; repeat local pattern_poczatek_2,pattern_koniec=mw.ustring.match(pattern_poczatek,"^%s*(!?%s*^.-$)%s*|%s*(.*)%s*$"); if pattern_poczatek_2 and pattern_koniec then funkcja_zbierajacy_dane_patternow(pattern_poczatek_2); pattern_poczatek=pattern_koniec; else local pattern_caly=mw.ustring.match(pattern_poczatek,"^%s*(!?%s*^.-$)%s*$"); if(pattern_caly)then funkcja_zbierajacy_dane_patternow(pattern_caly); end; break; end; until not pattern_poczatek_2; if(#tab_pattern_wykrzyknik_lub_nie_wzorow>0)then for _ , tab_pattern_koniunkcja in ipairs(tab_pattern_wykrzyknik_lub_nie_wzorow) do local czy=true; for _,tab_pattern_elementy_koniunkcji in ipairs(tab_pattern_koniunkcja)do local pattern=tab_pattern_elementy_koniunkcji[1]; local wykrzyknik_negujacy_pattern=(tab_pattern_elementy_koniunkcji[2]=="!"); if(pattern)then if((not wykrzyknik_negujacy_pattern and mw.ustring.match(v, pattern))or(wykrzyknik_negujacy_pattern and not mw.ustring.match(v, pattern)))then czy=czy and true; if(not czy)then break; end; else czy=false; break; end; end end; if(czy)then return true;end; end; return false; end; return nil; end; if((zapytajnik)and((zapytajnik=="")or((zapytajnik=="?")and(#v>0))))then local wynik=regex(kind); if((type(wynik)~="nil")and(not wynik))then table.insert(invalid, argName(k)); elseif (#v > 0) and strony_modul.SprawdzanieURL(v) then table.insert(nakedurl, argName(k)) elseif strony_modul.ZnajdowanieNormalnychStronHttp(v) then table.insert(nakedurl, argName(k)) end; end; end end; end; local missing = {} local function inny_element2(k) local element=tab[k] if(element)then for name2,wartosc in pairs(element)do if((wartosc[2])and(k~=name2))then if((obslugiwane(name2))and(tabelka_parametrow_rodzica[name2]))then return true; end; end; end; end; for name,value in pairs(tab)do for name2,wartosc in pairs(value)do if((wartosc[2])and(name2==k)and(name2~=name))then if((obslugiwane(name))and(tabelka_parametrow_rodzica[name]))then return true; end; end; end; end; return false; end; for k, v in pairs(required) do if v and not inny_element2(k) then table.insert(missing, argName(k)) end end local czy_not_category=parametry_modul.CzyTak(tabelka_parametrow_rodzica["bez kategorii"]); local function Szablon_z_sprawdz_parametry() if(czy_not_category)then return "";end; local nazwy_modul=require("Module:Nazwy"); local nazwa_szablonu=szablonowe_modul.NazwaSzablonu(nazwy_modul["PEŁNANAZWASTRONY"]()); if(templateName==nazwa_szablonu)then local sprawdz_modul=require("Module:Sprawdź"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); return "[["..nazwy_np_modul.Category..":"..sprawdz_modul["NazwaKategoriiSprawdzaniaParametrówSzablonu"]().."|"..nazwy_modul["NAZWASTRONY"]().."]]"; end; return ""; end; local czy_missing=parametry_modul["CzySąElementyNumerowaneTablicy"](missing); local czy_konieczne=parametry_modul["CzySąElementyNumerowaneTablicy"](konieczne); local czy_unknown=parametry_modul["CzySąElementyNumerowaneTablicy"](unknown); local czy_invalid=parametry_modul["CzySąElementyNumerowaneTablicy"](invalid); local czy_deprecated=parametry_modul["CzySąElementyNumerowaneTablicy"](deprecated); local czy_repeated=parametry_modul["CzySąElementyNumerowaneTablicy"](repeated); local czy_empty=parametry_modul["CzySąElementyNumerowaneTablicy"](empty); local czy_noempty=parametry_modul["CzySąElementyNumerowaneTablicy"](noempty); local czy_files=parametry_modul["CzySąElementyNumerowaneTablicy"](files); local czy_nakedurl=parametry_modul["CzySąElementyNumerowaneTablicy"](nakedurl); local czy_exturl=parametry_modul["CzySąElementyNumerowaneTablicy"](exturl); if ((not czy_missing) and (not czy_konieczne) and (not czy_unknown) and (not czy_invalid) and (not czy_deprecated) and (not czy_repeated) and (not czy_empty) and (not czy_noempty) and (not czy_files) and (not czy_nakedurl) and (not czy_exturl) and (not emptyArg)) then return Szablon_z_sprawdz_parametry(); end local czy_informacje=not (parametry_modul.CzyTak(tabelka_parametrow_rodzica["usuń dodatkowe informacje"])); local result; if(czy_informacje)then result=mw.html.create("span") result:addClass("problemy"); result:addClass("error"); result:css('white-space','pre-line'); result:css('font-size','unset'); end; local typ; local typ_jednostki; local czy_nazwij_jednostka=parametry_modul.CzyTak(tabelka_parametrow_rodzica["nazwij jednostką"]); ----[""]=?--- local config = frame.args[""] local class, space, category = string.match(config or "", "^%s*(%S+)(%s+)(.-)%s*$") local nl = space and string.match(space, "\n") or "" class = class or config ---- if(((czy_informacje)and(not czy_nazwij_jednostka))or((category)and((not czy_not_category)and(mw.ustring.match(category,"%%s.-%%s")))))then --local frame2=pf:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}} local pudelko_modul=require("Module:Pudełko"); typ_jednostki=pudelko_modul["Typ jednostki 2"]{args={ ["obsługiwane jednostki jako nieopisowe strony"]="tak", ["nazwa przestrzeni nazw"]=pf and pf.args["tytuł przestrzeni nazw"] or frame.args["tytuł przestrzeni nazw"], ["nazwa jednostki"]=pf and pf.args["tytuł jednostki"] or frame.args["tytuł jednostki"], ["typ jednostki"]=pf and pf.args["rodzaj jednostki"] or frame.args["rodzaj jednostki"], },}; if(typ_jednostki=="artykuł")then typ="(artykuły)"; elseif(typ_jednostki=="artykuł dla dzieci")then typ="(artykuły dla dzieci)"; elseif(typ_jednostki=="strona użytkownika")then typ="(strony użytkowników)"; elseif(typ_jednostki=="strona brudnopisu projektu")then typ="(strony brudnopisu projektu)"; else typ="(strony niepodręcznikowe)"; end; else typ=nil; end; if(czy_informacje)then if(not czy_nazwij_jednostka)then if typ_jednostki=="artykuł" or typ_jednostki=="artykuł dla dzieci" or typ_jednostki=="strona użytkownika" or typ_jednostki=="strona brudnopisu projektu" then result:css("display", "none"); result:css("color","black"); else result:css("color", "red") end else result:css("color", "red") end; end; local czy_warning=not (parametry_modul.CzyTak(tabelka_parametrow_rodzica["usuń ostrzeżenie"])); local message; if(czy_informacje or czy_warning)then local function tab_inne_elementy_konieczne(k) local element=tab[k] local tab_konieczne={}; if(element)then for name2,wartosc in pairs(element)do if(name2~=k)then if(obslugiwane(name2))then if((wartosc[1])and(not wartosc[2])and(wartosc[3]))then if(not tabelka_parametrow_rodzica[name2])then if(not tab_konieczne[1])then tab_konieczne[1]={};end; table.insert(tab_konieczne_puste[1],argName(tonumber(name2) or name2)); end; elseif((wartosc[1])and(not wartosc[2])and(not wartosc[3]))then if(not tabelka_parametrow_rodzica[name2])then if(not inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then if(not tab_konieczne[2])then tab_konieczne[2]={};end; table.insert(tab_konieczne[2],argName(tonumber(name2) or name2)); end; elseif(#tabelka_parametrow_rodzica[name2]>0)then if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then if(not tab_konieczne[3])then tab_konieczne[3]={};end; table.insert(tab_konieczne[3],argName(tonumber(name2) or name2)); end; end; end; end; end; end; end; return tab_konieczne; end; local function tab_inne_elementy_z_mozliwymi_koniecznymi_niepustymi_wartosciami(k) local element=tab[k]; local tab_konieczne_puste={}; if(element)then for name2,wartosc in pairs(element)do if(name2~=k)then if(wartosc[1])then if((wartosc[4])and(not wartosc[2])and(not wartosc[3]))then if(obslugiwane(name2))then if( (not tabelka_parametrow_rodzica[name2]) or(#tabelka_parametrow_rodzica[name2]==0) )then if(not inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then table.insert(tab_konieczne_puste,argName(tonumber(name2) or name2)); end; --elseif((tabelka_parametrow_rodzica[name2]))and(#tabelka_parametrow_rodzica[name2]>0)then --if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then --return true; --end; end; end; end; end; end; end; end; return tab_konieczne_puste; end; local function tab_inne_elementy_z_mozliwymi_koniecznymi_pustymi_wartosciami(k) local element=tab[k]; local tab_konieczne_puste={}; if(element)then for name2,wartosc in pairs(element)do if(name2~=k)then if(wartosc[1])then if((not wartosc[4])and(not wartosc[2])and(not wartosc[3]))then if((obslugiwane(name2))and( (not tabelka_parametrow_rodzica[name2]) or((tabelka_parametrow_rodzica[name2])and(#tabelka_parametrow_rodzica[name2]>0)) ))then table.insert(tab_konieczne_puste,argName(tonumber(name2) or name2)); end; end; end; end; end; end; return tab_konieczne_puste; end; message=mw.html.create() if emptyArg then message:wikitext("Podano parametr o nazwie pustej o wartosci: |=", emptyArg, "|.<br/>") end if czy_missing then message:wikitext("Brakujące pola, które powinny być koniecznie podane: ", mw.text.listToText(missing), ".<br/>") end if czy_konieczne then for _,_konieczne in ipairs(konieczne) do local tab_element=tab_inne_elementy_konieczne(_konieczne); if(tab_element[1])then message:wikitext("Konieczne pola, które powinny być używane ze wszystkimi parametrami, dla argumentu: "..argName(_konieczne)..", z listy: "..mw.text.listToText(tab_element[1])..".<br/>") end; if(tab_element[2])then message:wikitext("Konieczne pola, które nie istnieją, a inne też konieczne, ale są puste, dla parametru:"..argName(_konieczne)..", z listy: "..mw.text.listToText(tab_element[2])..".<br/>") end; if(tab_element[3])then message:wikitext("Konieczne pola, które nie powinny być używane ze wszystkimi parametrami dla argumentu: "..argName(_konieczne)..", z listy: "..mw.text.listToText(tab_element[3])..".<br/>") end; end; end if czy_invalid then message:wikitext("Pola, mają nieprawidłową wartość, dla parametrów z listy: ", mw.text.listToText(invalid), ".<br/>") end if czy_unknown then message:wikitext("Nieznane pola używane przez szablon: ", mw.text.listToText(unknown), ".<br/>") end if czy_deprecated then message:wikitext("Przestarzałe pola, które są obsługiwane, ale których nie powinno się raczej używać: ", mw.text.listToText(deprecated), ".<br/>") end if czy_repeated then message:wikitext("Pola, o podanej wartości lub same pozycje, dla parametrów z listy: ", mw.text.listToText(repeated), ", nie powinny jednocześnie ze sobą współistnieć.<br/>") end if czy_empty then for _,_empty in ipairs(empty) do message:wikitext("Dla pola "..argName(_empty).." wykryto wartości z pustymi polami: "..mw.text.listToText(tab_inne_elementy_z_mozliwymi_koniecznymi_niepustymi_wartosciami(_empty))..", które, któreś z nich lub wszystkie, powinny być niepuste.<br/>") end; end if czy_noempty then for _,_noempty in ipairs(noempty) do message:wikitext("Dla pola "..argName(_noempty).." wykryto wartości z niepustymi polami: "..mw.text.listToText(tab_inne_elementy_z_mozliwymi_koniecznymi_pustymi_wartosciami(_noempty))..", które powinny być puste.<br/>") end; end if czy_files then for _,_files in ipairs(files) do message:wikitext("Dla pola "..argName(_files).." wykryto nieoczekiwaną grafikę: " .. mw.text.listToText(files) .. ".") end; end; if czy_nakedurl then for _,_nakedurl in ipairs(nakedurl) do message:wikitext("Dla pola "..argName(_nakedurl).." wykryto gołe linki: " .. mw.text.listToText(nakedurl) .. ".") end; end; if czy_exturl then for _,_exturl in ipairs(exturl) do message:wikitext("Dla pola "..argName(_exturl).." wykryto linki zewnętrzne: " .. mw.text.listToText(exturl) .. ".") end; end; end; local warning; if(czy_warning)then warning = mw.html.create('span'); warning:css('color','red'); warning:css('white-space','pre-line'); warning:css('word-break','break-all'); warning:addClass("problemy"); end; if(templateName)then mw.logObject(templateName, "templateName") local dwukropek=mw.ustring.match(templateName,"^%s*:"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](templateName); local wywolanie;local wywolanie2; local szablonowe_modul=require("Module:Szablonowe"); if dwukropek or nazwa_przestrzeni_strony~="" then wywolanie=szablonowe_modul["PokazanieWywołaniaSzablonu"](templateName,tabelka_parametrow_rodzica); wywolanie2="{{"..templateName.."}}"; if(parametry_modul.CzyTak(category))then templateName=mw.ustring.gsub(templateName,"^%s*:",""); if(not czy_not_category)then if(typ)then category=mw.ustring.format(category,templateName,typ); else category=mw.ustring.format(category,templateName); end; category=pf:preprocess(category); end; class=mw.ustring.format(class,mw.ustring.gsub(templateName,"%s+","-")); end; else wywolanie=szablonowe_modul["PokazanieWywołaniaSzablonu"](templateName,tabelka_parametrow_rodzica); wywolanie2="{{"..templateName.."}}"; if(parametry_modul.CzyTak(category))then local bez_pierwszej_litery=mw.ustring.match(templateName,"^.(.*)"); local czy_jest_wielka_litera=mw.ustring.match(bez_pierwszej_litery,"%u"); local szablon; if(not czy_jest_wielka_litera)then szablon=mw.getContentLanguage():lcfirst(templateName);else szablon=templateName;end; if(not czy_not_category)then if(typ)then category=mw.ustring.format(category,szablon,typ); else category=mw.ustring.format(category,szablon); end; category=pf:preprocess(category); end; class=mw.ustring.format(class,mw.ustring.gsub(szablon,"%s+","-")); end; end if(czy_warning)then local strong = mw.html.create('strong'); strong:wikitext("Wywołanie ") local span = mw.html.create('span'); span:css('font-weight','normal'); span:css('white-space','pre'); span:css('color',"brown"); span:wikitext(wywolanie); local strong2=mw.html.create('strong'); strong2:wikitext(" z wykrytymi parametrami z nieprawidłościami:<br/>"); warning:node(strong); warning:node(span); warning:node(strong2); end; if(czy_informacje)then local strong = mw.html.create('strong'); strong:wikitext("Szablon "..wywolanie2.." z wykrytymi parametrami z nieprawidłościami:<br/>"); result:node(strong); end; end; local czy_usun_linkowanie=parametry_modul.CzyTak(tabelka_parametrow_rodzica["usuń linkowanie"]); if(not czy_usun_linkowanie)then local _ = mw.title.new("Module:Sprawdź/Wywołanie funkcji/Parametry").id; end; if(czy_informacje or czy_warning)then message = tostring(message) end; if(czy_warning)then warning:wikitext(message); mw.addWarning(tostring(warning)); end; if czy_informacje and class then result:addClass(class) end if(czy_informacje)then result:wikitext(message);end; local str_category; if not czy_not_category and category then str_category=category; else str_category=""; end return nl..((czy_informacje)and tostring(result:allDone()) or "")..str_category..Szablon_z_sprawdz_parametry(); end, ["odn"] = function(frame) local pf = frame:getParent() local i = 1 local problems = false local yeardetected = false while true do local arg = pf.args[i] if not arg then problems = i == 1 and "brak argumentów" or false break end if (i > 5) or yeardetected then problems = "za dużo argumentów pozycyjnych" break end if #arg == 0 then problems = "pusty argument" break end if arg ~= mw.text.trim(arg) then problems = "nieoczekiwane odstępy na początku lub końcu argumentu" break end if string.match(arg, "^%d+%l?$") then yeardetected = true if i == 1 then problems = "rok musi być ostatnim parametrem po nazwiskach autorów" break end elseif string.match(arg, "^s[%-%.:]%s*%d+") then problems = "prawdopodobnie nieprawidłowo podany numer strony" break elseif string.match(arg, "%s%s") then problems = "podwójne odstępy" break elseif mw.ustring.match(arg, "^%a+%d") then if not mw.ustring.match(arg, "^[%u%d]+$") then problems = "prawdopodobnie sklejone argumenty (brak pionowej kreski)" break end elseif mw.ustring.match(arg, "^OdeB ") then -- [[Ordre de Bataille]] elseif mw.ustring.match(arg, "^%u%l+%u") then local justification = { ["De"] = true, ["Del"] = true, ["Di"] = true, ["Le"] = true, ["Mac"] = true, ["Mc"] = true, ["Te"] = true, -- TeSelle ["Sar"] = true, -- SarDesai ["Van"] = true, -- VanBuren ["La"] = true, -- LaSalle } if not justification[mw.ustring.match(arg, "^%u%l+")] then problems = "prawdopodobnie sklejone argumenty (brak pionowej kreski)" break end end i = i + 1 end if not problems then local odn = pf.args.odn if odn and ((#odn ~= 1) or (odn < "a") or (odn > "z")) then problems = "nieoczekiwany parametr odn" end end if not problems then local s = pf.args.s if s and string.match(s, "&[a-z]+;") then problems = "użyto encji HTML w numerze strony" end end if not problems then if pf.args.strona or pf.args.ss or pf.args.strony or pf.args.p or pf.args.page or pf.args.pp or pf.args.pages then problems = "przestarzały parametr z numerem strony" end end if not problems then return nil end local result = mw.html.create("span"):addClass("problemy-w-odn") local frame2=pf:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}} local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2) if typ_jednostki=="artykuł" or typ_jednostki=="artykuł dla dzieci" or typ_jednostki=="strona użytkownika" or typ_jednostki=="strona brudnopisu projektu" then result:css("display", "none") else result:css("color", "red") end local typ; if(typ_jednostki=="artykuł")then typ="artykuły"; elseif(typ_jednostki=="artykuł dla dzieci")then typ="artykuły dla dzieci"; elseif(typ_jednostki=="strona użytkownika")then typ="strony użytkowników"; elseif(typ_jednostki=="strona brudnopisu projektu")then typ="strony brudnopisu projektu"; else typ="strony niepodręcznikowe"; end; local kategorie_modul=require("Module:Kategorie"); local str_kategoria=kategorie_modul.Kategoria{args={[1]="Szablon odn ("..typ..") do sprawdzenia"}}; result:wikitext(str_kategoria); result:wikitext("ODN: ", problems) return tostring(result) end, ["Wikidane"] = function(frame) local property = frame.args.cecha local field = frame.args.pole local value = frame.args[1] if not property or not field then return end if not value then value = frame:getParent().args[field] if not value or (#value == 0) then return end end local entity = mw.wikibase.getEntity() if not entity or not entity.claims or not entity.claims[property] then return end for i, v in ipairs(entity.claims[property]) do if v.mainsnak.snaktype == "value" then if value == v.mainsnak.datavalue.value then return end end end local template = frame:getParent():getTitle() local infobox = mw.ustring.match(template, "^Szablon:(.- infobox)$") return mw.ustring.format("[[Kategoria:%s – niezgodność w Wikidanych – %s – %s]]", infobox and "Infoboksy" or "Szablony", infobox or template, field) end, ["bez parametrów"] = function(frame) for k, v in pairs(frame:getParent().args) do return nil end return "tak" end, ["pole z hostem"] = function (frame) local host = frame.args.host if host and (#host > 0) then for k, v in pairs(frame:getParent().args) do local link = string.match(v, "[hH][tT][tT][pP][sS]?://[%S]+") if link then local uri = mw.uri.new(link) local valid, _ = mw.uri.validate(uri) if valid and uri.host and (#uri.host > 0) then if host == uri.host then mw.logObject({k, link}, "cały") return k end if #host < #uri.host then local s1 = '.'..host local s2 = string.sub(uri.host, -#s1) if s1 == s2 then mw.logObject({k, link}, "fragment") return k end end end end end end end, ["pola z autorami"] = function (frame) local result = {} local nazwisko = frame.args["nazwisko"] local imie = frame.args["imię"] local autor = frame.args["autor"] local link = frame.args["link"] local maxIndex = tonumber(frame.args["max"]) local prefix = frame.args["przed"] or "" local suffix = frame.args["po"] or "" for i = 1, maxIndex do local s = i == 1 and "" or tostring(i) local nin = string.gsub(nazwisko, '#', s) local iin = string.gsub(imie, '#', s) local ain = string.gsub(autor, '#', s) local lin = string.gsub(link, '#', s) local niv = frame:getParent().args[nin] local iiv = frame:getParent().args[iin] local aiv = frame:getParent().args[ain] local liv = frame:getParent().args[lin] local nis = niv and (#niv > 0) local iis = iiv and (#iiv > 0) local ais = aiv and (#aiv > 0) local lis = liv and (#liv > 0) local bad = (nis and ais) -- nazwisko -> zbędny autor or (nis and not iis) -- nazwisko bez imienia or (lis and not nis and not ais) -- tylko link or (iis and not nis) -- imię bez nazwiska if bad then table.insert(result, i) end end if #result > 0 then return prefix..mw.text.listToText(result)..suffix end end, ["pola z gołymi linkami"] = function (frame) local result = {} for k, v in pairs(frame:getParent().args) do local link = string.match(v, "^[hH][tT][tT][pP][sS]?://[%S]+") if link then local justified = frame.args[k] if not justified then mw.logObject(v,k) table.insert(result, '"'..k..'"') end end end return mw.text.listToText(result) end, ["uri"] = function(frame) mw.logObject(frame:getParent():getTitle(), "parent:title") _ = mw.title.new("Moduł:Sprawdź/deprecated/uri").id local link = frame.args["link"] local space = frame.args["spacja"] local strony_modul=require("Module:Strony"); local check = strony_modul.SprawdzanieURL(link) if check then return link end return (space and (check ~= nil)) and link or "" end, ["url"] = function(frame) local link = frame.args[1] local okText = frame.args[2] or "ok" local isValid = string.find(link, '{{{') == 1 or checkUri(link) if isValid then return okText end return "" end, ["lista nazw niepustych argumentów"] = function(frame) local argNames = {} for k, v in pairs(frame:getParent().args) do if #mw.text.trim(v) > 0 then table.insert(argNames, tostring(k)) end end return table.concat(argNames, ", ") end, } bv4577z22sxmy3rjmypit8bcqjana6z Szablon:Cytuj/opis 10 31190 556527 499737 2026-09-15T08:36:52Z Persino 2851 556527 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|Cytuj}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} {{Szablony cytowania}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Uniwersalny szablon cytowania źródeł. Jest to mocno uproszczona wersja standardowych szablonów cytowania: {{s|Cytuj książkę}}, {{s|Cytuj pismo}} i {{s|Cytuj stronę}}. Dzięki integracji zapewnia spójny wygląd wszystkich przypisów i pozycji bibliograficznych. === Autorzy === Wszystkie pola, w których przekazywany jest autor podlegają analizie, dzięki której automatycznie znajdowane są imiona i nazwiska, a imiona są skracane. Do sterowania analizą służą znaki specjalne. Zobacz też przykłady na [[Szablon:Cytuj/test#Autorzy]]. {| class=wikitable |- ! colspan="2" | znak ! opis ! przykład |- | średnik || (<kbd>;</kbd>) | oddziela kolejnych autorów, umożliwia podawanie więcej niż jednego autora w jednym parametrze | <kbd>&hellip;&#x7C;&hellip;&nbsp;=&nbsp;Jan&nbsp;Kowalski;&nbsp;Adam&nbsp;Nowak&nbsp;&#x7C;&hellip;</kbd> |- | przecinek || (<kbd>,</kbd>) | oddziela kolejnych autorów albo jeśli w polu jest podany średnik to oddziela nazwisko od imion, gdy stosowany jest zapis katalogowy, tj. najpierw nazwisko a po nim imiona; przydatne również jeśli autor ma więcej niż jedno nazwisko | <kbd> &hellip;&#x7C;&hellip;&nbsp;=&nbsp;Kowalski,&nbsp;Jan;&nbsp;&#x7C;&hellip;</kbd> |- | hash || (<kbd>#</kbd>) | umieszczony przed pierwszym wyrazem oznacza, że jest to nazwisko, które powinno zawsze być zapisywane przed imionami; przydatne do przekazywania autorów azjatyckich | <kbd> &hellip;&#x7C;&hellip;&nbsp;=&nbsp;#Suzuki&nbsp;Ito&nbsp;&#x7C;&hellip;</kbd> <br>(Suzuki to nazwisko, a Ito to imię) |- | cudzysłowy || (<kbd>"…"</kbd>) | umieszczony na początku i na samym końcu umożliwia wpisanie instytucji jako autorów; analiza zostaje całkowicie wyłączona, a treść wyświetlana bez zmian; przydatne do podania autorów-instytucji, np. przy cytowaniu dokumentów | <kbd>&hellip;&#x7C;&hellip;&nbsp;=&nbsp;"Zarząd Geodezji, Kartografii i Katastru Miejskiego we Wrocławiu"&nbsp;&#x7C;&hellip;</kbd> |- | gwiazdka || (<kbd>*</kbd>) | (odradzane) umieszczony na początku nazwy oznacza, że analiza nazwy ma zostać wyłączona, ale tylko dla danego fragmentu; co oznacza, że może powodować problemy jeśli w nazwie są przecinki, stąd łatwiej zwykle używać cudzysłów | <kbd>&hellip;&#x7C;&hellip;&nbsp;=&nbsp;*&nbsp;LifeTime&nbsp;Community&nbsp;Working&nbsp;Groups&nbsp;&#x7C;&hellip;</kbd> |- |} Jeśli autorów jest nie więcej niż trzech to w ich nazwach można stosować wikizację np. „<kbd>&hellip;&#x7C;&hellip;&nbsp;= <nowiki>[[Jan&nbsp;Kowalski]]</nowiki>&nbsp;&#x7C;&hellip;</kbd>”. Jeśli jest ich więcej to wikizacja ma sens jedynie dla pierwszego, gdyż jedynie pierwszy autor jest jawnie prezentowany. Pełna lista jest dostępna w dymku z podpowiedzią stowarzyszonym ze słowami „i inni” dodawanym bezpośrednio po pierwszym autorze. Prezentacja tych danych zależy od używanej przeglądarki. ; Uwaga : Użycie średnika jest praktycznie obowiązkowe jeśli jedyny autor ma dwuwyrazowe nazwisko. Przykłady poprawnie obsługiwanych wywołań to „<kbd><nowiki>[[Ignace de La Potterie|La Potterie, Ignace de]];</nowiki></kbd>” lub „<kbd>Del Soldato, Eva;</kbd>”. Powyższa analiza jest ograniczana do kilkuset pierwszych bajtów treści pola. Istnieją trzy pola <var>autor</var>, <var>redaktor</var> i <var>autor r</var>, dla których następujące kombinacje w ramach jednego wywołania są poprawne: {| class=wikitable |- ! wywołanie ! znaczenie |- | <kbd> &hellip; &#x7C;autor = AAA &#x7C;tytuł = XXX &#x7C;&hellip; </kbd> | podano autora(ów) całości publikacji |- | <kbd> &hellip; &#x7C;redaktor = RRR &#x7C;tytuł = XXX &#x7C;&hellip; </kbd> | podano redaktora(ów) całości publikacji |- | <kbd> &hellip; &#x7C;autor r = BBB &#x7C;rozdział = YYY &#x7C;redaktor = RRR &#x7C;tytuł = XXX &#x7C;&hellip; </kbd> | podano autora(ów) rozdziału oraz redaktora(ów) całości publikacji |- | <kbd> &hellip; &#x7C;autor r = BBB &#x7C;rozdział = YYY &#x7C;autor = AAA &#x7C;tytuł = XXX &hellip; &#x7C;&hellip; </kbd> | podano autora(ów) rozdziału oraz autorów całości publikacji |} === Linki zewnętrzne === Za generowanie linków zewnętrznych odpowiadają dwa pola <var>url</var> i <var>archiwum</var>. Stowarzyszone z nimi są odpowiednio <var>data dostępu</var> i <var>zarchiwizowano</var>. Zasady poprawnego zapisu odwołania do źródeł dostępnych w sieci wymagają aby zawsze podawać datę dostępu do informacji. Istnieją serwisy internetowe, które w swoim adresie zawierają datę archiwizacji i pełen adres oryginalnego źródła. Pozwala to na uproszczenie wypełniania parametrów szablonu zgodnie z poniższą tabelą. {| class=wikitable ! <var>url</var> ! <var>archiwum</var> ! Uwagi |- | ''podany'' | ''podany'' | Uniwersalna wersja na okoliczność wszelkich serwisów archiwizujących. |- | <kbd><nowiki>//web.archive</nowiki></kbd> | ''brak'' | Metoda uproszczona, w której brakujące dane (<var>url</var>, <var>zarchiwizowano</var>) są automatycznie uzyskane z adresu do serwisu archiwizującego. |- | ''brak'' | ''podany'' | Brak pierwotnego adresu do serwisu oznacza, że cytowane treści są dostępne jedynie w formie zarchiwizowanej. |- | <kbd>&lt;nowiki&gt;</kbd>''podany''<kbd>&lt;/nowiki&gt;</kbd> | ''podany'' | Metoda pozwalająca na wyłączenie pierwotnego adresu do serwisu, co oznacza, że cytowane treści są dostępne jedynie w formie zarchiwizowanej. |- | ''brak'' | <kbd><nowiki>//web.archive</nowiki></kbd> | Obsługiwana jest wersja uproszczona, w której data archiwizacji (<var>zarchiwizowano</var>) jest automatycznie uzyskana z adresu do serwisu archiwizującego. |} Adres przekazywany do <var>url</var> jest domyślne podłączany pod tytuł lub czasopismo, jeśli tytułu nie podano. Gdyby takie zachowanie było nieprawidłowe to należy z pola zrezygnować i zastosować standardowy zapis tworzenia linków zewnętrznych bezpośrednio w odpowiednim polu. === Patent === Cytowanie opisów patentowych umożliwia pole <var>patent</var>, w którym podaje się identyfikator patentu lub zgłoszenia patentowego. Nadaje ono specyficzne znaczenie następującym polom: {| class="wikitable ! Pole ! Funkcja ! Opis |- | <var>autor</var> | '''wnioskujący''' | Podmiot składający wniosek, zazwyczaj przedsiębiorstwo lub instytucja państwowa zatrudniająca wynalazcę. |- | <var>inni</var> | '''wynalazca''' | Faktyczny odkrywca. Można go pominąć, jeśli jest także wnioskodawcą. |- | <var>data</var> | '''data wydania''' lub '''data wniosku''' | Znaczenie zależy od tego czy cytowany jest patent czy zgłoszenie patentowe. |- | <var>tytuł</var> | tytuł | Taki jak we wniosku patentowym. |- | <var>patent</var> | '''identyfikator patentu''' | Format wg tabeli poniżej. |- | <var>url</var> | ''link pod tytułem'' lub <kbd>nie</kbd> | Brak pola generuje link automatycznie. Wartość specjalna umożliwia jego wyłączenie, jeśli adres utworzony automatycznie nie wskazuje właściwego dokumentu. |} Identyfikator patentu lub zgłoszenia musi przyjąć jedną z następujących form: {| class="wikitable" ! Wzór ! Opis |- | <kbd>XX #####</kbd> | Identyfikator patentu z kraju o kodzie XX i numerze #####. Generuje automatyczny link do wyszukiwarki patentów w {{link-interwiki|Espacenet|Q=Q1050583}}. |- | <kbd>zgłoszenie XX #####</kbd> | Identyfikator zgłoszenia patentowego z kraju o kodzie XX i numerze #####. Generuje automatyczny link do wyszukiwarki patentów w Espacenet. |- | <kbd>XX#####</kbd> | Identyfikator patentu z kraju o kodzie XX i numerze #####. Generuje automatyczny link do wyszukiwarki patentów w [[w:Wyszukiwarka Google|Google]]. |- | <kbd>zgłoszenie XX#####</kbd> | Identyfikator zgłoszenia patentowego z kraju o kodzie XX i numerze #####. Generuje automatyczny link do wyszukiwarki patentów w Google. |- | <kbd>USPTO #####</kbd> | Identyfikator amerykańskiego patentu o numerze #####. Generuje automatyczny link do wyszukiwarki patentów w tamtejszym urzędzie. |- | <kbd>USPTO #####</kbd> | Identyfikator amerykańskiego zgłoszenia patentowego o numerze #####. Generuje automatyczny link do wyszukiwarki patentów w tamtejszym urzędzie. |} === Narzędzia cytowania === Zestawienie narzędzi ułatwiających wstawianie szablonów cytowania znajduje się na stronie [[w:Wikipedia:Narzędzia cytowania|Wikipedia:Narzędzia cytowania]]. == Przykłady == ; książka – podstawowe użycie : <code><nowiki>* {{Cytuj |autor = [[w:Roman Murawski|Roman Murawski]] |tytuł = Filozofia matematyki |wydawca = [[w:Wydawnictwo Naukowe PWN|Wydawnictwo Naukowe PWN]] |miejsce = Warszawa |rozdział = całka |data = 2001 |isbn = 8301136049 |s = 12–15}}</nowiki></code> :* {{Cytuj |autor = [[w:Roman Murawski|Roman Murawski]] |tytuł = Filozofia matematyki |wydawca = [[w:Wydawnictwo Naukowe PWN|Wydawnictwo Naukowe PWN]] |miejsce = Warszawa |rozdział = całka |data = 2001 |isbn = 8301136049 |s = 12–15}} ; książka – trzech autorów, tytuł z wikilinkiem, wydanie : <code><nowiki>* {{Cytuj |autor = [[w:Joe Bloggs|Joe Bloggs]]; John Smith; Jim Smythe |tytuł = [[w:Tysiąc akrów|1000 akrów]] |wydanie = 2 |data = 1922 |wydawca = Gebethner i Wolff |s = 103}}</nowiki></code> :* {{Cytuj |autor = [[w:Joe Bloggs|Joe Bloggs]]; John Smith; Jim Smythe |tytuł = [[w:Tysiąc akrów|1000 akrów]] |wydanie = 2 |data = 1922 |wydawca = Gebethner i Wolff |s = 103}} ; czasopismo naukowe : <code><nowiki>* {{Cytuj |autor = Benoit Viollet, Fabrizio Andreelli, Sebastian B. Jørgensen, Christophe Perrin, Alain Geloen, Daisy Flamez, James Mu, Claudia Lenzner, Olivier Baud, Myriam Bennoun, Emmanuel Gomas, Gaël Nicolas, Jørgen F.P. Wojtaszewski, Axel Kahn, David Carling, Frans C. Schuit, Morris J. Birnbaum, Erik A. Richter, Rémy Burcelin, Sophie Vaulont |tytuł = The AMP-activated protein kinase α2 catalytic subunit controls whole-body insulin sensitivity |data = 2003 |czasopismo = The Journal of Clinical Investigation |doi = 10.1172/JCI16567 |wolumin = 111 |numer = 1 |pmid = 12511592 |pmc = 151837 |s = 91–98}}</nowiki></code> :* {{Cytuj |autor = Benoit Viollet, Fabrizio Andreelli, Sebastian B. Jørgensen, Christophe Perrin, Alain Geloen, Daisy Flamez, James Mu, Claudia Lenzner, Olivier Baud, Myriam Bennoun, Emmanuel Gomas, Gaël Nicolas, Jørgen F.P. Wojtaszewski, Axel Kahn, David Carling, Frans C. Schuit, Morris J. Birnbaum, Erik A. Richter, Rémy Burcelin, Sophie Vaulont |tytuł = The AMP-activated protein kinase α2 catalytic subunit controls whole-body insulin sensitivity |data = 2003 |czasopismo = The Journal of Clinical Investigation |doi = 10.1172/JCI16567 |wolumin = 111 |numer = 1 |pmid = 12511592 |pmc = 151837 |s = 91–98}} ; strona WWW : <code><nowiki>* {{Cytuj |url = https://wyborcza.pl/7,75400,24963690,dajmy-lasom-posadzic-sie-samym.html |autor = [[w:Adam Wajrak|Adam Wajrak]] |tytuł = Dajmy lasom posadzić się samym |opublikowany = Wyborcza.pl |data = 2019-07-05 |data dostępu = 2022-01-24}}</nowiki></code> :* {{Cytuj |url = https://wyborcza.pl/7,75400,24963690,dajmy-lasom-posadzic-sie-samym.html |autor = [[w:Adam Wajrak|Adam Wajrak]] |tytuł = Dajmy lasom posadzić się samym |opublikowany = Wyborcza.pl |data = 2019-07-05 |data dostępu = 2022-01-24}} ; zarchiwizowana strona WWW :z widoczną w URL-u informacją o archiwizacji: :: <code><nowiki>* {{Cytuj |archiwum = https://web.archive.org/web/20190809220934/https://wyborcza.pl/7,75400,24963690,dajmy-lasom-posadzic-sie-samym.html |autor = [[w:Adam Wajrak|Adam Wajrak]] |tytuł = Dajmy lasom posadzić się samym |opublikowany = Wyborcza.pl |data = 2019-07-05}}</nowiki></code> ::* {{Cytuj |archiwum = https://web.archive.org/web/20190809220934/https://wyborcza.pl/7,75400,24963690,dajmy-lasom-posadzic-sie-samym.html |autor = [[w:Adam Wajrak|Adam Wajrak]] |tytuł = Dajmy lasom posadzić się samym |opublikowany = Wyborcza.pl |data = 2019-07-05}} <!-- :bez danych o archiwizacji w URL-u: :: <code><nowiki>* {{Cytuj | url = http://wyborcza.pl/1,75475,13748049,Milion_widzow_obejrzalo__Drogowke_.html| autor = *Redakcja Kulturalna | tytuł = Milion widzów obejrzało „Drogówkę” | data = 2013-04-16 | opublikowany = Wyborcza.pl | archiwum = http://archive.is/gupyt |zarchiwizowano= 2013-09-20}}</nowiki></code> ::{{Cytuj | url = http://wyborcza.pl/1,75475,13748049,Milion_widzow_obejrzalo__Drogowke_.html| autor = *Redakcja Kulturalna | tytuł = Milion widzów obejrzało „Drogówkę” | data = 2013-04-16 | opublikowany = Wyborcza.pl | archiwum = http://archive.is/gupyt |zarchiwizowano= 2013-09-20}} --> == Szablony == Gotowe zestawy do skopiowania i wypełnienia: * cytowanie książki *: <code><nowiki>{{Cytuj |autor = |tytuł = |wydanie = |miejsce = |wydawca = |data = |opis = |s = |isbn = }}</nowiki></code> *: <code><nowiki>{{Cytuj |autor r = |rozdział = |redaktor = |tytuł = |wydanie = |miejsce = |wydawca = |data = |opis = |s = |isbn = }}</nowiki></code> * cytowanie artykułu z czasopisma *: <code><nowiki>{{Cytuj |autor = |tytuł = |czasopismo = |odpowiedzialność = |wolumin = |numer = |miejsce = |wydawca = |data = |s = |issn = }}</nowiki></code> * cytowanie strony internetowej *: <code><nowiki>{{Cytuj |autor = |url = |tytuł = |praca = |opublikowany = |data = |data dostępu =</nowiki> {{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki>}}</nowiki></code> Należy pamiętać o usunięciu niewykorzystanych pól. == Błędy i komunikaty == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. Szablon w wyniku analizy i przetwarzana parametrów dodaje na końcu wyniku kategorie i komunikaty informujące o błędach lub o sposobie działania. Komunikaty są wyświetlane w artykułach w trybie edycji strony, a w większości pozostałych przestrzeni także w trybie wyświetlania. ; <span class="problemy">Brakujące pola: ''nazwy pól''. Nieprawidłowe pola: ''nazw pól''. Nieznane pola: ''nazwy pól''. Przestarzałe pola: ''nazwy pól''. Gołe linki: ''nazwy pól''.</span> : Standardowe sprawdzanie wartości parametrów z użyciem {{m|Sprawdź|Parametry}}. Należy również pilnować zasady, że nie podaje się pustych pól. ; <span class="problemy">Tylko tytuł.</span> : Wykrywanie wywołań szablonu tylko z jednym niepustym polem <code>tytuł</code>. ; <span class="problemy">j?</span> : Podano dwa pola <code>czasopismo</code> i <code>opublikowany</code> o identycznej treści. ; <span class="problemy">!!!</span> : Analiza pola z listą autorów sygnalizuje problem z ich odróżnianiem stosując przecinek jako separator ; <span class="problemy">dostęp?</span> : Akceptowane wartości w polu <code>dostęp</code> są zdefiniowane w [[Moduł:Cytuj/dostęp]]. ; <span class="problemy"><s>url</s></span> : Początek adresu w polu <code>url</code> sugeruje, że jest to link, który może być wygenerowany z użyciem jakiegoś pola obsługującego identyfikator publikacji. ; <span class="problemy">Url</span> : W szablonie znajduje się niepuste pole <code>url</code> lecz jego wartość nie została użyta. Prawdopodobnie pole z tytułem zawiera już inny link. ; <span class="problemy">data?, data dostępu?, zarchiwizowano?</span> : Nieprawidłowa lub nierozpoznana data. W przypadku stron internetowych lub szablonów pochodnych, na przykład linkujących do zewnętrznych baz danych, może to być również brak dziennej daty dostępu. : {{ln|Kategoria:Szablon cytuj do sprawdzenia}} ; <span class="problemy">???</span> : Nie udało się zidentyfikować typu cytowanego źródła. Dobór przekazanych parametrów sugeruje najczęściej cytowanie strony internetowej z książką lub czasopismem. : {{ln|Kategoria:Szablon cytuj bez określonego trybu}} ; <span class="problemy">p?</span> : Podano jednocześnie pola <code>opublikowany</code> (parametr stosuje się dla stronn WWW) i <code>wydawca</code> (parametr stosuje się dla książek) . To pierwsze nie jest w takim przypadku wyświetlane. : {{ln|Kategoria:Szablon cytuj zawiera pola 'opublikowany' i 'wydawca'}} ; <span class="problemy">a?</span> : Szablony cytujące czasopisma, które mają podany identyfikator <code>pmid</code> mogą zawierać i często zawierają listę autorów w formacie przypominającym zapis na stronach [[w:PMID|PMID]]. : {{ln|Kategoria:Szablon cytuj zastosował alternatywną metodę analizy pola z opisem autora}} ; <span class="problemy">wiki?</span> : Istnieje podejrzenie, że cytowane źródło może wskazywać na Wikipedię. : {{ln|Kategoria:Szablon cytuj wskazuje na Wikipedię}} ; <span class="problemy">1 stycznia</span> : Daty podane w formacie <code>RRRR-01-01</code> zostały uznane za bardzo częsty błąd generowany przez Citoid, który daty roczne wzbogaca o dzień 1 stycznia. Są one automatycznie zamieniane na <code>RRRR</code>. Jeśli data 1 stycznia RRRR ma być faktycznie umieszczona w szablonie to należy zastosować dowolny alternatywny jej zapis. : Ta informacja nie dodaje żadnej kategorii ; <span class="problemy">i inni</span> : W polu z listą autorów znaleziono treść ''i inni'' lub jej synonim. Szablon nie narzuca żadnych ograniczeń na liczbę osób, więc najlepiej zawsze wymieniać wszystkich. : {{ln|Kategoria:Szablon cytuj nie zawiera wszystkich autorów}} ; <span class="problemy" style="display:inline !important">Brak numerów stron w książce</span>, <span class="problemy" style="display:inline !important">Brak numerów stron w czasopiśmie</span> : Szablon wykrył cytowanie książki lub czasopisma, a jednocześnie brak pola <code>s = [numery stron]</code> lub <code>odn = <nowiki>[</nowiki>wywołanie [[szablon:odn|odn]]<nowiki>]</nowiki></code>, lub identyfikatora obiektu (<code>doi</code>, <code>pmid</code>, <code>pmc</code>, <code>arxiv</code> lub <code>jstor</code>). Komunikat widoczny jest w trybie edycji artykułu lub w przestrzeniach innych niż przestrzeń główna. : {{ln|Kategoria:Szablon cytuj – brak strony}} ---- Istnieje też możliwość wskazania, że szablon zmienił nazwę czasopisma z wykorzystaniem modułu [[:Moduł:Cytuj/czasopisma]]. W tym celu należy dopisać w [[Specjalna:Moja strona/common.css|swoim CSS]] następujący kod: <syntaxhighlight lang="css"> .citation.c:after { color: [kolor]; font-weight: bold; [linia opcjonalna] content: " [wyświetlany tekst komunikatu]"; } </syntaxhighlight> :Przykład: <syntaxhighlight lang="css"> .citation.c:after { color: magenta; font-weight: bold; content: " c ?"; } </syntaxhighlight> :daje dopisek „ <span style="color: magenta">'''c?'''</span>”. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == Uwaga! Część aliasów zawiera wersję z innych języków i nie powinno się ich używać. Np. aliasy w języku angielskim [[mw:Content translation/Templates#Making_templates_more_easily_translatable|ułatwiają tłumaczenie]] z Angielskiej Wikipedii. Niezależnie od tego zawsze lepiej jest używać form podstawowych, nie aliasów. <templatedata> { "description": "Tego szablonu używamy, kiedy chcemy podać źródło informacji.", "params": { "autor": { "label": "Autor publikacji (imię i nazwisko)", "aliases": [ "author", "vauthors", "authors" ], "type": "content", "suggested": true, "required": false, "description": "Imię i nazwisko autora lub autorów. Wielu autorów należy oddzielić średnikiem („;”). Można tworzyć odnośniki jak w kodzie źródłowym ([[Imię nazwisko]]). Przy cytowaniu dokumentów urzędowych itp. nazwę instytucji można podać w cudzysłowie: \"Nazwa instytucji\"; wówczas autor zostanie wyświetlony bez modyfikacji. Jeśli cytowany jest patent to autorem jest wnioskujący." }, "tytuł": { "label": "Tytuł źródła", "aliases": [ "title" ], "type": "content", "suggested": true, "required": true, "description": "Tytuł publikacji, strony internetowej lub nazwa oprogramowania. Można tworzyć odnośniki jak w kodzie źródłowym ([[tytuł]]), jeśli źródło ma artykuł w Wikipedii. Można również podać link zewnętrzny ([url tytuł]), jeśli cytujemy stronę internetową lub treść źródła jest dostępna w Internecie, np. w Google Books. Jeśli podany jest link zewnętrzny należy odpowiednio wypełnić pole „data dostępu”." }, "czasopismo": { "label": "Czasopismo", "aliases": [ "journal", "newspaper", "magazine", "periodical" ], "type": "content", "suggested": false, "required": false, "description": "Nazwa czasopisma. Można tworzyć odnośniki jak w zwykłym tekście ([[czasopismo]]). Linki wewnętrzne do artykułu o czasopiśmie najlepiej jednak wskazać na stronie [[Moduł:Cytuj/czasopisma]] – wówczas linki wstawiane będą automatycznie. W ww. module można też zdefiniować skrótowe nazwy czasopism. Uwaga: dla stron internetowych (np. stron gazet, portali informacyjnych, blogów itp.) użyj odpowiednio pól „praca” lub „opublikowany”." }, "data": { "label": "Data", "aliases": [ "date", "year" ], "type": "string", "suggested": true, "required": false, "description": "Data publikacji. Preferowany format RRRR-MM-DD. Akceptowane są daty niepełne, czyli sam rok lub rok i miesiąc. Dopuszczalne są również niektóre zapisy stosowane w opisie bibliograficznym (przedział lat, rok przypuszczalny, ustalony lub przybliżony, itp.). Brak daty wydania należy podawać jako „b.r.”. Uwaga: szablon automatycznie zmienia datę dzienną na roczną w przypadku dat RRRR-01-01. Jeśli 1 stycznia jest faktyczną datą publikacji, należy zastosować zapis „1 stycznia RRRR” lub „RRRR-1-1” itp." }, "data dostępu": { "label": "Data dostępu", "aliases": [ "access-date" ], "type": "string", "suggested": true, "required": false, "description": "Data w formacie RRRR-MM-DD, która określa dzień, w którym podane źródło było rzeczywiście przeglądane i w którym informacje podane w artykule rzeczywiście znajdowały się pod podanym odnośnikiem. Data ta dotyczy przede wszystkim stron internetowych i podobnych źródeł, które mogą być aktualizowane lub zmieniane, nie dotyczy zaś książek czy artykułów w czasopismach." }, "isbn": { "label": "ISBN", "type": "string", "suggested": false, "required": false, "description": "Identyfikator ISBN książki. Jeżeli książka ma kilka ISBN, można podać je wszystkie, rozdzielając spacją. Numer można podać bez dywizów, szablon wstawi je automatycznie w odpowiednie miejsca." }, "issn": { "label": "ISSN", "type": "string", "suggested": false, "required": false, "description": "Numer ISSN wydawnictwa ciągłego (czasopisma), dostępny również dla tomów książek wydawanych w wydaniach ciągłych, jak np. roczniki statystyczne, np. 1640-3630. W przypadku podania DOI, numer ISSN jest zbędny." }, "rozdział": { "label": "Tytuł rozdziału lub nazwa hasła", "aliases": [ "chapter" ], "type": "content", "suggested": false, "required": false, "description": "Pełny tytuł rozdziału lub inaczej wydzielonej części publikacji, nazwa hasła lub artykułu w encyklopedii, słowniku." }, "redaktor": { "label": "Redaktor (imię i nazwisko)", "type": "content", "suggested": false, "required": false, "description": "Imię i nazwisko redaktora. W parametrze można przekazać wielu redaktorów oddzielając kolejnych średnikiem. Można tworzyć odnośniki jak w kodzie źródłowym ([[Imię nazwisko]])." }, "wydanie": { "label": "Wydanie", "aliases": [ "issue" ], "type": "string", "suggested": false, "required": false, "description": "W przypadku książek należy podać wydanie (edition) cyfrą arabską, jeśli nie była to pierwsza publikacja książki. Pomija się inne informacje dot. wydania (np. „rozszerzone” itp.)." }, "wolumin": { "label": "Wolumin lub tom", "aliases": [ "volume" ], "type": "string", "suggested": false, "required": false, "description": "Numer woluminu czasopisma lub numer tomu książki." }, "numer": { "label": "Numer czasopisma w ramach woluminu", "aliases": [ "number" ], "type": "string", "suggested": false, "required": false, "description": "Numer czasopisma w ramach woluminu. " }, "inni": { "label": "Inni autorzy", "type": "string", "suggested": false, "required": false, "description": "Używane przy wymienianiu innych twórców dzieła. Kilku twórców oddzielamy średnikami. Należy na końcu zaznaczyć ich funkcję jako np. (tłum.), (red.), (ilus.). Jeśli cytowany jest patent to w tym polu podawany jest wynalazca." }, "seria": { "label": "Seria", "aliases": [ "series" ], "type": "string", "suggested": false, "required": false, "description": "Tytuł serii wydawniczej" }, "opis": { "label": "Dodatkowy opis", "type": "string", "suggested": false, "required": false, "description": "Pozwala umieścić dalszy opis źródła, na przykład numer części, nazwę serii." }, "miejsce": { "label": "Miejsce wydania", "aliases": [ "publication-place", "location", "place" ], "type": "string", "suggested": false, "required": false, "description": "Miejsce wydania książki lub czasopisma. Kilka miejsc wydania oddziela się półpauzą (–) bez odstępu." }, "wydawca": { "label": "Wydawnictwo", "aliases": [ "publisher" ], "type": "content", "suggested": false, "required": false, "description": "Wydawca książki, czasopisma lub portalu internetowego – można tworzyć odnośniki do istniejącego w Wikipedii artykułu o wydawnictwie." }, "s": { "label": "Strony, kolumny itp.", "aliases": [ "page", "pages" ], "type": "string", "suggested": false, "required": false, "description": "Wskazuje na pierwszą stronę lub zakres stron, które były źródłem informacji (np. 580 lub 580–594). Szablon automatycznie wstawia skrót s., chyba że wartość nie jest liczbą dziesiętną (wówczas należy podać również ten skrót, np. „s. XV–XVII”, „s. M15–M18”). Nie należy tu podawać całkowitej liczby stron w książce." }, "odpowiedzialność": { "label": "Odpowiedzialność", "type": "string", "suggested": false, "required": false, "description": "Osoba odpowiedzialna prawnie za treść wydawnictwa ciągłego. Redaktor naczelny, ciało zbiorowe itp. W przypadku CD-Action: Zbigniew Bański – redaktor naczelny." }, "praca": { "label": "Nazwa źródła internetowego", "aliases": [ "work" ], "type": "string", "suggested": false, "required": false, "description": "Jeżeli cytowane jest źródło internetowe (np. artykuł, hasło w encyklopedii internetowej, rekord w bazie danych, artykuł w czasopiśmie internetowym – które podaje się w polu „tytuł” i odnośnik do niego w polu „URL”), podaje się w tym polu nazwę encyklopedii, bazy danych, czasopisma itp. Pole stanowi odpowiednik pola „tytuł” przy wypełnionym polu „rozdział” dla książek i podobnych publikacji. Np. dla rekordu w bazie danych w tym polu podaje się nazwę tej bazy, nazwę rekordu podaje się w polu „tytuł”, odnośnik do rekordu w polu „URL”, a instytucję odpowiedzialną za bazę danych w polu „Nazwa serwisu lub instytucji odpowiedzialnej”." }, "opublikowany": { "label": "Nazwa serwisu lub instytucji odpowiedzialnej", "aliases": [ "website" ], "type": "string", "suggested": true, "required": false, "description": "Nazwa serwisu lub portalu internetowego bądź nazwa instytucji, która prowadzi dany serwis lub portal (nie jest to miejsce na wpisywanie skróconej wersji adresu strony), np. dla strony „www.stat.gov.pl” można podać „Główny Urząd Statystyczny”, dla „www.sejm.gov.pl” – „Sejm Rzeczypospolitej Polskiej”, a dla „www.gazeta.pl” – „Gazeta.pl”." }, "autor r": { "label": "Autor rozdziału (imię i nazwisko)", "type": "string", "suggested": false, "required": false, "description": "Imię i nazwisko autora rozdziału, który został podany w polu „tytuł rozdziału”. W parametrze można przekazać wielu autorów oddzielając kolejnych średnikiem. Można tworzyć odnośniki jak w kodzie źródłowym ([[Imię nazwisko]]), jeśli autor ma artykuł w Wikipedii." }, "typ nośnika": { "label": "Typ nośnika", "type": "string", "suggested": false, "required": false, "description": "Rodzaj nośnika publikacji w formie elektronicznej." }, "patent": { "label": "Numer patentu", "type": "string", "suggested": false, "required": false, "description": "Kod urzędu patentowego (zwykle dwuliterowy kod kraju) i numer patentu. Wnioskującego o patent należy podać w polu „autor”, a o wynalazcy można wspomnieć w polu „inni”." }, "doi": { "label": "DOI", "type": "string", "suggested": false, "required": false, "description": "Digital object identifier, np. 10.1016/j.coi.2004.08.001." }, "lccn": { "label": "LCCN", "type": "string", "suggested": false, "required": false, "description": "Identyfikator LCCN książki w Bibliotece Kongresu Stanów Zjednoczonych." }, "pmid": { "label": "PMID", "type": "string", "suggested": false, "required": false, "description": "Identyfikator bazy PubMed." }, "pmc": { "label": "PMC", "type": "string", "suggested": false, "required": false, "description": "Identyfikator PMC." }, "bibcode": { "label": "Bibcode", "type": "string", "suggested": false, "required": false, "description": "Identyfikator Bibcode." }, "oclc": { "label": "OCLC", "type": "string", "suggested": false, "required": false, "description": "Numer identyfikacyjny w Online Computer Library Center, np. 3185581." }, "arxiv": { "label": "Identyfikator arXiv", "type": "string", "suggested": false, "required": false, "description": "Numer identyfikacyjny w elektronicznym archiwum naukowych preprintów." }, "jstor": { "label": "Identyfikator JSTOR", "type": "string", "suggested": false, "required": false, "description": "Numer identyfikacyjny w cyfrowej bibliotece JSTOR." }, "ol": { "label": "Identyfikator Open Library", "type": "string", "suggested": false, "required": false, "description": "Numer identyfikacyjny w cyfrowej bibliotece Open Library (bez prefiksu OL)." }, "id": { "label": "Identyfikator niestandardowy", "type": "string", "suggested": false, "required": false, "description": "Niestandardowy identyfikator czasopisma. Pamiętaj o podaniu typu identyfikatora, nie tylko samego numeru." }, "url": { "label": "URL", "type": "url", "required": false, "description": "Adres URL strony." }, "archiwum": { "label": "Archiwum", "aliases": [ "archive-url" ], "type": "url", "suggested": false, "required": false, "description": "Adres URL archiwum strony." }, "zarchiwizowano": { "label": "Data archiwizacji", "aliases": [ "archive-date" ], "type": "string", "suggested": false, "required": false, "description": "Data zarchiwizowania strony." }, "cytat": { "label": "Cytat", "aliases": [ "quote" ], "type": "content", "suggested": false, "required": false, "description": "Cytat – może zawierać tag &lt;br /&gt; czy inną wikizację. Cytat pokaże się po tekście „Cytat: ”. Przy długich cytatach, wskazane jest zakończenie cytatu właśnie &lt;br /&gt;, dla klarowności prezentacji całości. Szablon nie doda cudzysłowu lub kursywy. Redakcja szaty graficznej czy interpunkcji cytatu leży w gestii użytkownika i stanowi część wartości parametru." }, "język": { "label": "Język", "aliases": [ "language" ], "type": "string", "suggested": true, "required": false, "description": "Język publikacji – parametr korzysta z kodów języków szablonu {{lang}}, np. „pl”, „en”, „de”. Jeśli publikacja jest wielojęzyczna to można przekazać więcej kodów oddzielając je znakami odstępu, np. „en pl”." }, "dostęp": { "label": "Rodzaj dostępu", "type": "string", "suggested": false, "required": false, "description": "Rodzaj dostępu do dokumentu „otwarty” (lub „o”), „zamknięty” („z”), „rejestracja” („r”; gdy publikacja dostępna jest po bezpłatnej rejestracji), „częściowy” („c”; dostępna wersja próbna, limit wyświetleń w ciągu dnia itp.). Podanie parametru skutkuje wyświetleniem odpowiedniej ikonki dostępu przed danym przypisem. W niektórych przypadkach ikonka jest generowana automatycznie – ma to miejsce gdy w szablonie wypełniony jest parametr „pmc” (pojawia się ikonka otwartego dostępu) lub gdy rodzaj dostępu jest zdefiniowany na stronie [[Moduł:Cytuj/dostęp]]." }, "odn": { "label": "Odnośnik", "type": "string", "description": "Wartość „tak” dodaje odnośnik i umożliwia stosowanie przypisów za pomocą szablonu {{odn|nazwisko|rok}}. W przypadku nietypowych autorów itp., w parametrze odn można stosować szablon {{odn/id|unikatowa-nazwa|rok}}, który wygeneruje specjalną nazwę odnośnika, do której można się odnieść w {{odn}}.", "autovalue": "tak" }, "kropka": { "label": "Dodatkowy opis", "type": "string", "description": "Dodatkowa treść umieszczana na samym końcu przypisu." }, "url-status": { "label": "Status URL", "description": "Umożliwia ukrycie niebezpiecznych linków. Ukrywa standardowy url pozostawiając ten wpisany w archiwum (jeśli dostępny).", "type": "string", "suggestedvalues": [ "ukryj", "std" ], "default": "std" } }, "maps": { "citoid": { "edition": "wydanie", "url": "url", "nameOfAct": "tytuł", "caseName": "tytuł", "title": "tytuł", "subject": "tytuł", "publisher": "wydawca", "company": "wydawca", "publicationTitle": "czasopismo", "websiteTitle": "opublikowany", "blogTitle": "opublikowany", "forumTitle": "opublikowany", "proceedingsTitle": "opublikowany", "dictionaryTitle": "opublikowany", "encyclopediaTitle": "opublikowany", "seriesTitle": "opublikowany", "date": "data", "issueDate": "data", "dateEnacted": "data", "dateDecided": "data", "accessDate": "data dostępu", "location": "miejsce", "place": "miejsce", "ISSN": [ "issn" ], "ISBN": [ "isbn" ], "PMCID": "pmc", "PMID": "pmid", "oclc": "oclc", "pages": "s", "firstPage": "s", "codePages": "s", "reporterVolume": "wolumin", "codeVolume": "wolumin", "volume": "wolumin", "series": "opis", "issue": "numer", "patentNumber": "numer", "episodeNumber": "numer", "billNumber": "numer", "documentNumber": "numer", "publicLawNumber": "numer", "docketNumber": "numer", "DOI": "doi", "language": "język", "author": "autor", "contributor": "autor", "artist": "autor", "cartographer": "autor", "presenter": "autor", "interviewee": "autor", "inventor": "autor", "programmer": "autor", "editor": "redaktor", "archiveUrl": "archiwum", "archiveDate": "zarchiwizowano" } }, "paramOrder": [ "autor", "autor r", "redaktor", "rozdział", "tytuł", "czasopismo", "data", "data dostępu", "isbn", "issn", "wydanie", "wolumin", "numer", "inni", "opis", "miejsce", "wydawca", "s", "odpowiedzialność", "praca", "opublikowany", "seria", "typ nośnika", "patent", "doi", "lccn", "pmid", "pmc", "bibcode", "oclc", "arxiv", "jstor", "ol", "id", "url", "url-status", "archiwum", "zarchiwizowano", "cytat", "język", "dostęp", "odn", "kropka" ], "format": "{{_ |_ = _}}" } </templatedata> == Dostosowywanie == Ostateczny wynik działania szablonu zawiera niektóre fragmenty opakowane w znaczniki <kbd><nowiki><span></nowiki></kbd>. W zależności od zawartości mają one przypisany atrybut klasy, który może być wykorzystany w [[w:Kaskadowe arkusze stylów|CSS]] do dostosowania wyglądu według własnych upodobań. Lista dostępnych klas jest następująca: {| class=wikitable |- ! nazwa klasy ! zawartość znacznika ! uwagi |- | <kbd>.cite-lastname</kbd> | nazwisko autora | |- | <kbd>.cite-name-before</kbd> | imię lub imiona autora umieszczone przed nazwiskiem | widoczne w przypisach, a ukryte w treści głównej i bibliografii |- | <kbd>.cite-name-after</kbd> | imię lub imiona autora umieszczone po nazwisku | ukryte w przypisach, a widoczne w treści głównej i bibliografii |- | <kbd>.cite-name-full</kbd> | imię lub imiona autora | |- | <kbd>.cite-name-initials</kbd> | inicjały imienia | ukryte |- | <kbd>.cite-at-al</kbd> | jeśli autorów jest więcej niż trzech to drugi i kolejni autorzy są zamienieni na opis ''i inni'', ich pełna lista jest umieszczona w dymku z podpowiedzią | |- |} == Kategorie techniczne generowane przez szablon == * [[:Kategoria:Szablon cytuj w trybie 'cytuj książkę' bez obowiązkowych parametrów]] ({{PAGESINCAT:Szablon cytuj w trybie 'cytuj książkę' bez obowiązkowych parametrów}}) * [[:Kategoria:Szablon cytuj w trybie 'cytuj pismo' bez obowiązkowych parametrów]] ({{PAGESINCAT:Szablon cytuj w trybie 'cytuj pismo' bez obowiązkowych parametrów}}) * [[:Kategoria:Szablon cytuj w trybie 'cytuj stronę' bez obowiązkowych parametrów]] ({{PAGESINCAT:Szablon cytuj w trybie 'cytuj stronę' bez obowiązkowych parametrów}}) * [[:Kategoria:Szablon cytuj bez określonego trybu]] ({{PAGESINCAT:Szablon cytuj bez określonego trybu}}) * [[:Kategoria:Szablon cytuj zawiera pola 'opublikowany' i 'wydawca']] ({{PAGESINCAT:Szablon cytuj zawiera pola 'opublikowany' i 'wydawca'}}) * [[:Kategoria:Szablon cytuj zastosował alternatywną metodę analizy pola z opisem autora]] ({{PAGESINCAT:Szablon cytuj zastosował alternatywną metodę analizy pola z opisem autora}}) * [[:Kategoria:Szablon cytuj zamienił nazwę czasopisma]] ({{PAGESINCAT:Szablon cytuj zamienił nazwę czasopisma}}) * [[:Kategoria:Szablon cytuj wskazuje na Wikipedię]] ({{PAGESINCAT:Szablon cytuj wskazuje na Wikipedię}}) * [[:Kategoria:Szablon cytuj nie zawiera wszystkich autorów]] ({{PAGESINCAT:Szablon cytuj nie zawiera wszystkich autorów}}) * [[:Kategoria:Szablon cytuj używa pól opisowych]] ({{PAGESINCAT:Szablon cytuj używa pól opisowych}}) * [[:Kategoria:Szablon cytuj – brak strony]] ({{PAGESINCAT:Uniwersalny szablon cytuj – brak strony}}) == Zobacz też == * [[w:Wikipedia:Bibliografia|Wikipedia:Bibliografia]] * [[:Kategoria:Szablony informujące o problemach z uźródłowieniem]] {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony cytowania}} </includeonly> 4rmbmu1fm1ecxrnnkphgi3wz55lzltz Wikibooks:Administratorzy interfejsu 4 32857 556426 518952 2026-09-15T01:10:20Z Persino 2851 556426 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}}, z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}} które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na {{Code|atrybuty=|dir="ltr"|.css}} lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw {{Code|atrybuty=|dir="ltr"|MediaWiki:}}, jak i na podstronach innych użytkowników). == Lista administratorów interfejsu polskich Wikibooks == Administratorzy interfejsu są wyróżnieni słowami ''Administrator interfejsu'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}. # {{lż|Wargo}} == Zobacz też == * {{lr|Administratorzy}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> idjotfb24b5ftgrjubmne6mrc1gee4i 556427 556426 2026-09-15T01:12:15Z Persino 2851 556427 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}}, z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na {{Code|atrybuty=|dir="ltr"|.css}} lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw {{Code|atrybuty=|dir="ltr"|MediaWiki:}}, jak i na podstronach innych użytkowników). == Lista administratorów interfejsu polskich Wikibooks == Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}. # {{lż|Wargo}} == Zobacz też == * {{lr|Administratorzy}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> qur0vfisf2t242hc8rb76f9wasjllkd 556429 556427 2026-09-15T01:19:07Z Persino 2851 556429 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}}, z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na: {{Code|atrybuty=|dir="ltr"|.css}}, lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw: {{Code|atrybuty=|dir="ltr"|MediaWiki:}}, jak i na podstronach innych użytkowników). == Lista administratorów interfejsu polskich Wikibooks == Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}. # {{lż|Wargo}} == Zobacz też == * {{lr|Administratorzy}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> pp9ml5uucgd0o57jybiluzmxtt1jvii 556430 556429 2026-09-15T01:19:40Z Persino 2851 556430 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}}, z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na: {{Code|atrybuty=|dir="ltr"|.css}}, lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw: {{Code|atrybuty=|dir="ltr"|{{Np|MediaWiki|link=tak}}:}}, jak i na podstronach innych użytkowników). == Lista administratorów interfejsu polskich Wikibooks == Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}. # {{lż|Wargo}} == Zobacz też == * {{lr|Administratorzy}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> g31z21ifb4z13dpkjwhl9hhezblguck 556434 556430 2026-09-15T01:32:38Z Persino 2851 556434 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}} (Zobacz też: {{lc2|Grupy użytkowników}}), z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na: {{Code|atrybuty=|dir="ltr"|.css}}, lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw: {{Code|atrybuty=|dir="ltr"|{{Np|MediaWiki|link=tak}}:}}, jak i na podstronach innych użytkowników). == Lista administratorów interfejsu polskich Wikibooks == Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}. # {{lż|Wargo}} == Zobacz też == * {{lr|Administratorzy}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> a7apqsgk1npbyfqpdn0lt5dnk4bxz4x 556437 556434 2026-09-15T01:37:22Z Persino 2851 /* Zobacz też */ 556437 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> '''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}} (Zobacz też: {{lc2|Grupy użytkowników}}), z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na: {{Code|atrybuty=|dir="ltr"|.css}}, lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw: {{Code|atrybuty=|dir="ltr"|{{Np|MediaWiki|link=tak}}:}}, jak i na podstronach innych użytkowników). == Lista administratorów interfejsu polskich Wikibooks == Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}. # {{lż|Wargo}} == Zobacz też == {{Wikibooks:Administratorzy/Zobacz też}} {{BrClear}} <noinclude> {{UnikatowaStronaKoniec}} {{Kategorie | 1 = Pomoc - Strony projektu | 2 = Uprawnienia administracyjne | 3 = Metastrony Wikibooks }} </noinclude> a74mozo4srdvpw0zpvnw1bsd84r9cob Szablon:Tabela nawigacyjna 10 32860 556472 553233 2026-09-15T03:47:42Z Persino 2851 556472 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" /> {| {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{styl|}}}|style="{{{styl}}}"}} <!-- --> class="tabela_nawigacyjna {{#switch:{{{funkcja|UkrytaWikitabelowaListaMenu}}} | UkrytaWikitabelowaListaMenu = wikitable collapsible collapsed | PokazanaWikitabelowaListaMenu = wikitable collapsible | StatycznaWikitabelowaListaMenu = wikitable | UkrytaNiewikitabelowaListaMenu = collapsible collapsed | PokazanaNiewikitabelowaListaMenu = collapsible | StatycznaNiewikitabelowaListaMenu = | AutomatycznaUkrytaWikitabelowaListaMenu = wikitable collapsible autocollapse | AutomatycznaUkrytaNiewikitabelowaListaMenu = collapsible autocollapse | WewnętrznaUkrytaWikitabelowaListaMenu = wikitable collapsible innercollapse | WewnętrznaUkrytaNiewikitabelowaListaMenu = collapsible innercollapse | #default = wikitable }} {{{klasa|}}}" {{{opcje|}}} |- ! {{#if:{{{styl tytułu|}}}|style="{{{styl tytułu}}}"}} | {{Div|klasa=tabela_nawigacyjna-tytuł|{{{tytuł}}}}} |- | {{#if:{{{styl spisu|}}}|style="{{{styl spisu}}}"}} | {{{spis}}} |}<!-- -->{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Sprawdź|Parametry | = problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s do sprawdzenia{{))}} | funkcja = ^UkrytaWikitabelowaListaMenu${{!}}^PokazanaWikitabelowaListaMenu${{!}}^StatycznaWikitabelowaListaMenu${{!}}^UkrytaNiewikitabelowaListaMenu${{!}}^PokazanaNiewikitabelowaListaMenu${{!}}^StatycznaNiewikitabelowaListaMenu${{!}}^AutomatycznaUkrytaWikitabelowaListaMenu${{!}}^AutomatycznaUkrytaNiewikitabelowaListaMenu${{!}}^WewnętrznaUkrytaWikitabelowaListaMenu${{!}}^WewnętrznaUkrytaNiewikitabelowaListaMenu$ | id = | styl = | styl tytułu = | styl spisu = | klasa = | opcje = | tytuł = txt! | spis = txt! }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 2845v77r8qjgsn2k5v4xi1mrhc8pbu3 556533 556472 2026-09-15T09:25:51Z Persino 2851 556533 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" /> {| {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{styl|}}}|style="{{{styl}}}"}} <!-- --> class="tabela_nawigacyjna {{#switch:{{{funkcja|UkrytaWikitabelowaListaMenu}}} | UkrytaWikitabelowaListaMenu = wikitable collapsible collapsed | PokazanaWikitabelowaListaMenu = wikitable collapsible | StatycznaWikitabelowaListaMenu = wikitable | UkrytaNiewikitabelowaListaMenu = collapsible collapsed | PokazanaNiewikitabelowaListaMenu = collapsible | StatycznaNiewikitabelowaListaMenu = | AutomatycznaUkrytaWikitabelowaListaMenu = wikitable collapsible autocollapse | AutomatycznaUkrytaNiewikitabelowaListaMenu = collapsible autocollapse | WewnętrznaUkrytaWikitabelowaListaMenu = wikitable collapsible innercollapse | WewnętrznaUkrytaNiewikitabelowaListaMenu = collapsible innercollapse | #default = wikitable }} {{{klasa|}}}" {{{opcje|}}} |- ! {{#if:{{{styl nagłówka|}}}|style="{{{styl nagłówka}}}"}} {{#if:{{{klasa nagłówka|}}}|class="{{{klasa nagłówka}}}"}} | {{Div|klasa=tabela_nawigacyjna-tytuł {{{klasa tytułu|}}}|styl={{{styl tytułu|}}}|{{{tytuł}}}}} |- | {{#if:{{{styl komórki|}}}|style="{{{styl komórki}}}"}} {{#if:{{{klasa komórki|}}}|class="{{{klasa komórki}}}"}} | <!-- -->{{Div|klasa={{{klasa spisu|}}}|styl={{{styl spisu|}}}| {{{spis}}}}} |}<!-- -->{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Sprawdź|Parametry | = problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s do sprawdzenia{{))}} | funkcja = ^UkrytaWikitabelowaListaMenu${{!}}^PokazanaWikitabelowaListaMenu${{!}}^StatycznaWikitabelowaListaMenu${{!}}^UkrytaNiewikitabelowaListaMenu${{!}}^PokazanaNiewikitabelowaListaMenu${{!}}^StatycznaNiewikitabelowaListaMenu${{!}}^AutomatycznaUkrytaWikitabelowaListaMenu${{!}}^AutomatycznaUkrytaNiewikitabelowaListaMenu${{!}}^WewnętrznaUkrytaWikitabelowaListaMenu${{!}}^WewnętrznaUkrytaNiewikitabelowaListaMenu$ | id = | styl = | styl nagłówka = | styl tytułu = | klasa nagłówka = | klasa tytułu = | styl komórki = | styl spisu = | klasa komórki = | klasa spisu = | klasa = | opcje = | tytuł = txt! | spis = txt! }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 9dxcobqrkpayw5x4dx43ye12zdzpjlc MediaWiki:Scribunto-doc-page-show 8 33746 556383 553853 2026-09-14T20:38:32Z Persino 2851 556383 wikitext text/x-wiki {{#switch:{{NAMESPACE}} | {{Ns:Module}} = {{Dokumentacja|$1}} {{#switch:<!-- -->{{#invoke:Parametry|Or |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}} }} | Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}} | Wikibooks/Przykład = {{MediaWiki:Scribunto-doc-page-przykłady|$1}}<!-- -->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!-- -->{{Jeśli niepuste |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}} }}<!-- -->}} | #default = {{Kategoria|Moduły z opisami}} }} | #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}} }} tom350tmxi8tjyyxleg6rjjl5gbm3f4 556386 556383 2026-09-14T20:41:13Z Persino 2851 556386 wikitext text/x-wiki {{#switch:{{NAMESPACE}} | {{Ns:Module}} = {{Dokumentacja|$1}} {{#switch:<!-- -->{{#invoke:Parametry|Or |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}} }} | Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}} | Wikibooks/Przykład = {{MediaWiki:Scribunto-doc-page-przykład|$1}}<!-- -->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!-- -->{{Jeśli niepuste |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}} }}<!-- -->}} | #default = {{Kategoria|Moduły z opisami}} }} | #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}} }} 461ai3fm1h4xay3e0d8twfyd2odojod MediaWiki:Scribunto-doc-page-does-not-exist 8 33747 556384 553854 2026-09-14T20:39:11Z Persino 2851 556384 wikitext text/x-wiki {{#switch:{{NAMESPACE}} | {{Ns:Module}} = {{#if:{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}} |{{Ombox|typ=wiadomość|grafika={{Ikona|stop}}|tekst=To jest moduł przekierowujący, który wskazuje na {{lo|{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}}}.}} }}<!-- -->{{#switch:{{#invoke:Parametry|Or |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Mapa/dane)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(ISBN)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}} |{{PAGENAME}} }} | Mapa/dane = {{Dokumentacja | zawartość = {{Ombox|tekst = Ten moduł jest szablonem z danymi do '''{{lpw2|Szablony lokalizacyjne}}'''.{{Br}}Opis pochodzi z {{m|Mapa/doc}}.}}<!-- --><templatestyles src="Moduł:Infobox/styles.css" />{{#invoke:Mapa/doc|opis}} }}{{Kategoria|Szablony lokalizacyjne - podmoduły modułu Mapa}} | ISBN = {{#if:{{Dopasuj|ciąg={{SUBPAGENAME}}|wzór=^{{!(}}0-9{{)!}}+X?$}} |{{Dokumentacja |zawartość = {{Ombox|tekst = Ten moduł jest szablonem deklarującym formalnie błędny numer [{{lpg|International Standard Book Number|ISBN}}.}}{{#invoke:ISBN|opis}}}}{{Kategoria|Błędny numer ISBN}} |{{Dokumentacja}}{{Kategoria|ISBN}} }} | Wikibooks/Przykład = {{MediaWiki:Scribunto-doc-page-przykłady|$1}}<!-- -->{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu<!-- -->{{Jeśli niepuste |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}} }}<!-- -->}} | Brudnopis = ''Dokumentacja dla tego modułu może zostać utworzona pod nazwą [[:$1]]''.{{Kategoria|Moduły, bez opisów, brudnopisu}} | #default = {{Dokumentacja}}{{Kategoria|Moduły bez opisów}} }} | #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów bez opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-header}}.}} }} o8k62qpqlr5ku8ycmftcgu84saqhqsu 556387 556384 2026-09-14T20:41:29Z Persino 2851 556387 wikitext text/x-wiki {{#switch:{{NAMESPACE}} | {{Ns:Module}} = {{#if:{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}} |{{Ombox|typ=wiadomość|grafika={{Ikona|stop}}|tekst=To jest moduł przekierowujący, który wskazuje na {{lo|{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}}}.}} }}<!-- -->{{#switch:{{#invoke:Parametry|Or |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Mapa/dane)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(ISBN)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}} |{{PAGENAME}} }} | Mapa/dane = {{Dokumentacja | zawartość = {{Ombox|tekst = Ten moduł jest szablonem z danymi do '''{{lpw2|Szablony lokalizacyjne}}'''.{{Br}}Opis pochodzi z {{m|Mapa/doc}}.}}<!-- --><templatestyles src="Moduł:Infobox/styles.css" />{{#invoke:Mapa/doc|opis}} }}{{Kategoria|Szablony lokalizacyjne - podmoduły modułu Mapa}} | ISBN = {{#if:{{Dopasuj|ciąg={{SUBPAGENAME}}|wzór=^{{!(}}0-9{{)!}}+X?$}} |{{Dokumentacja |zawartość = {{Ombox|tekst = Ten moduł jest szablonem deklarującym formalnie błędny numer [{{lpg|International Standard Book Number|ISBN}}.}}{{#invoke:ISBN|opis}}}}{{Kategoria|Błędny numer ISBN}} |{{Dokumentacja}}{{Kategoria|ISBN}} }} | Wikibooks/Przykład = {{MediaWiki:Scribunto-doc-page-przykład|$1}}<!-- -->{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu<!-- -->{{Jeśli niepuste |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}} |{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}} }}<!-- -->}} | Brudnopis = ''Dokumentacja dla tego modułu może zostać utworzona pod nazwą [[:$1]]''.{{Kategoria|Moduły, bez opisów, brudnopisu}} | #default = {{Dokumentacja}}{{Kategoria|Moduły bez opisów}} }} | #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów bez opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-header}}.}} }} 86zc706xktkzfqiac9qgkhgdfyqe12z Szablon:Jeśli niepuste komunikat 10 41796 556417 354666 2026-09-14T23:25:21Z Persino 2851 556417 wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{{wtedy|'''Szablon {{s|{{{2|}}}}} zgłosił następujące błędy:'''}}}{{#if:{{{dodatkowe|}}}||{{{1|}}}}}|{{{przeciwnie|{{{3|}}}}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> e5qd1wl2julmae880vddhhj2enn716z Szablon:Jeśli niepuste komunikat/opis 10 42315 556415 421828 2026-09-14T23:16:17Z Persino 2851 /* Użycie */ 556415 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Dwa układy używania tego szablonu są według punktu: * Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. * Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}}, przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}. == Opis parametrów == ;Parametry *{{Code|1}} - lista błędów komunikatu, *{{Code|wtedy}} - część komunikatu, *{{Code|2}} - nazwa szablonu, *{{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, == Przykład == ;Przykład pierwszy {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}} ---- ;Przykład drugi {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}} ---- ;Przykład trzeci {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ;Przykład czwarty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Lista błędów komunikatu.", "type": "string", "required": true }, "2": { "description": "Nazwa szablonu.", "type": "string", "suggested": true }, "3": { "aliases": [ "przeciwnie" ], "description": "Wyświetlana, gdy nie ma komunikatu.", "type": "wiki-page-name", "suggested": true }, "wtedy": { "description": "Część komunikatu.", "type": "string" } }, "paramOrder": [ "1", "wtedy", "2", "3" ], "description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. " } </templatedata> == Zobacz też == * {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi, * {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony warunkowe}} </includeonly> ioces4ibc6d0pto88elauykewja0nsy 556416 556415 2026-09-14T23:21:19Z Persino 2851 /* Opis parametrów */ 556416 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Dwa układy używania tego szablonu są według punktu: * Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. * Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}}, przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}. == Opis parametrów == ; Parametry * {{Code|1}} - lista błędów komunikatu - sugerowany, * {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany, * {{Code|2}} - nazwa szablonu - opcjonalny, * {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany. == Przykład == ;Przykład pierwszy {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}} ---- ;Przykład drugi {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}} ---- ;Przykład trzeci {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ;Przykład czwarty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Lista błędów komunikatu.", "type": "string", "required": true }, "2": { "description": "Nazwa szablonu.", "type": "string", "suggested": true }, "3": { "aliases": [ "przeciwnie" ], "description": "Wyświetlana, gdy nie ma komunikatu.", "type": "wiki-page-name", "suggested": true }, "wtedy": { "description": "Część komunikatu.", "type": "string" } }, "paramOrder": [ "1", "wtedy", "2", "3" ], "description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. " } </templatedata> == Zobacz też == * {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi, * {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony warunkowe}} </includeonly> tt73pltnd7i5mraftu0nxjmw8ygm96i 556418 556416 2026-09-14T23:27:47Z Persino 2851 /* Opis parametrów */ 556418 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Dwa układy używania tego szablonu są według punktu: * Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. * Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}}, przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}. == Opis parametrów == ; Parametry * {{Code|1}} - lista błędów komunikatu - sugerowany, * {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany, * {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu, * {{Code|2}} - nazwa szablonu - opcjonalny, * {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany. == Przykład == ;Przykład pierwszy {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}} ---- ;Przykład drugi {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}} ---- ;Przykład trzeci {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ;Przykład czwarty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Lista błędów komunikatu.", "type": "string", "required": true }, "2": { "description": "Nazwa szablonu.", "type": "string", "suggested": true }, "3": { "aliases": [ "przeciwnie" ], "description": "Wyświetlana, gdy nie ma komunikatu.", "type": "wiki-page-name", "suggested": true }, "wtedy": { "description": "Część komunikatu.", "type": "string" } }, "paramOrder": [ "1", "wtedy", "2", "3" ], "description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. " } </templatedata> == Zobacz też == * {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi, * {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony warunkowe}} </includeonly> d2nnmas9hff4rda9g0w5byp2fsw95mm 556420 556418 2026-09-14T23:32:11Z Persino 2851 /* Użycie */ 556420 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Dwa układy używania tego szablonu są według punktu: * Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. * Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}. == Opis parametrów == ; Parametry * {{Code|1}} - lista błędów komunikatu - sugerowany, * {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany, * {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu, * {{Code|2}} - nazwa szablonu - opcjonalny, * {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany. == Przykład == ;Przykład pierwszy {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}} ---- ;Przykład drugi {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}} ---- ;Przykład trzeci {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ;Przykład czwarty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Lista błędów komunikatu.", "type": "string", "required": true }, "2": { "description": "Nazwa szablonu.", "type": "string", "suggested": true }, "3": { "aliases": [ "przeciwnie" ], "description": "Wyświetlana, gdy nie ma komunikatu.", "type": "wiki-page-name", "suggested": true }, "wtedy": { "description": "Część komunikatu.", "type": "string" } }, "paramOrder": [ "1", "wtedy", "2", "3" ], "description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. " } </templatedata> == Zobacz też == * {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi, * {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony warunkowe}} </includeonly> 8p34usgckq6561ehezw0ae87bxv803c 556421 556420 2026-09-14T23:33:16Z Persino 2851 /* Opis parametrów */ 556421 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Dwa układy używania tego szablonu są według punktu: * Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. * Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}. == Opis parametrów == ; Parametry * {{Code|1}} - lista błędów komunikatu - sugerowany, * {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany, * {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu - opcjonalny, * {{Code|2}} - nazwa szablonu - opcjonalny, * {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany. == Przykład == ;Przykład pierwszy {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}} ---- ;Przykład drugi {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}} ---- ;Przykład trzeci {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ;Przykład czwarty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ;Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Lista błędów komunikatu.", "type": "string", "required": true }, "2": { "description": "Nazwa szablonu.", "type": "string", "suggested": true }, "3": { "aliases": [ "przeciwnie" ], "description": "Wyświetlana, gdy nie ma komunikatu.", "type": "wiki-page-name", "suggested": true }, "wtedy": { "description": "Część komunikatu.", "type": "string" } }, "paramOrder": [ "1", "wtedy", "2", "3" ], "description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. " } </templatedata> == Zobacz też == * {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi, * {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony warunkowe}} </includeonly> jq4et1vy38b1mz9v8aze2pjazxeg9ep 556423 556421 2026-09-15T00:47:18Z Persino 2851 /* Przykład */ 556423 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Dwa układy używania tego szablonu są według punktu: * Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. * Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}. == Opis parametrów == ; Parametry * {{Code|1}} - lista błędów komunikatu - sugerowany, * {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany, * {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu - opcjonalny, * {{Code|2}} - nazwa szablonu - opcjonalny, * {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany. == Przykład == ; Przykład pierwszy {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}} ---- ; Przykład drugi {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}} ---- ; Przykład trzeci {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ; Przykład czwarty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ; Przykład piąty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}} ---- ; Przykład piąty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}} ---- ; Przykład szósty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Lista błędów komunikatu.", "type": "string", "required": true }, "2": { "description": "Nazwa szablonu.", "type": "string", "suggested": true }, "3": { "aliases": [ "przeciwnie" ], "description": "Wyświetlana, gdy nie ma komunikatu.", "type": "wiki-page-name", "suggested": true }, "wtedy": { "description": "Część komunikatu.", "type": "string" } }, "paramOrder": [ "1", "wtedy", "2", "3" ], "description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. " } </templatedata> == Zobacz też == * {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi, * {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony warunkowe}} </includeonly> fr3mqc1ktay4yhi3cumly10wol21azv 556424 556423 2026-09-15T00:48:51Z Persino 2851 /* Przykład */ 556424 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Dwa układy używania tego szablonu są według punktu: * Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. * Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}. == Opis parametrów == ; Parametry * {{Code|1}} - lista błędów komunikatu - sugerowany, * {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany, * {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu - opcjonalny, * {{Code|2}} - nazwa szablonu - opcjonalny, * {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany. == Przykład == ; Przykład pierwszy {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}} ---- ; Przykład drugi {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}} ---- ; Przykład trzeci {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ; Przykład czwarty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ; Przykład piąty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}} ---- ; Przykład piąty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|dodatkowe{{=}}tak|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|dodatkowe=tak|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}} ---- ; Przykład szósty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||dodatkowe{{=}}tak|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||dodatkowe=tak|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Lista błędów komunikatu.", "type": "string", "required": true }, "2": { "description": "Nazwa szablonu.", "type": "string", "suggested": true }, "3": { "aliases": [ "przeciwnie" ], "description": "Wyświetlana, gdy nie ma komunikatu.", "type": "wiki-page-name", "suggested": true }, "wtedy": { "description": "Część komunikatu.", "type": "string" } }, "paramOrder": [ "1", "wtedy", "2", "3" ], "description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. " } </templatedata> == Zobacz też == * {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi, * {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony warunkowe}} </includeonly> njgti6nt8gxhul8wq4gjsmvwzjdv4ze 556425 556424 2026-09-15T00:50:22Z Persino 2851 /* Przykład */ 556425 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Dwa układy używania tego szablonu są według punktu: * Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. * Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}. == Opis parametrów == ; Parametry * {{Code|1}} - lista błędów komunikatu - sugerowany, * {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany, * {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu - opcjonalny, * {{Code|2}} - nazwa szablonu - opcjonalny, * {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany. == Przykład == ; Przykład pierwszy {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}} ---- ; Przykład drugi {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}} ---- ; Przykład trzeci {{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ; Przykład czwarty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}} ---- ; Przykład piąty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|dodatkowe{{=}}tak|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|dodatkowe=tak|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}} ---- ; Przykład szósty {{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||dodatkowe{{=}}tak|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}} ; Wynik {{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||dodatkowe=tak|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}} == Błędy == Błędy należy zgłaszać na stronie {{kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { "1": { "description": "Lista błędów komunikatu.", "type": "string", "required": true }, "2": { "description": "Nazwa szablonu.", "type": "string", "suggested": true }, "3": { "aliases": [ "przeciwnie" ], "description": "Wyświetlana, gdy nie ma komunikatu.", "type": "wiki-page-name", "suggested": true }, "wtedy": { "description": "Część komunikatu.", "type": "string" } }, "paramOrder": [ "1", "wtedy", "2", "3" ], "description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. " } </templatedata> == Zobacz też == * {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi, * {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony warunkowe}} </includeonly> kq3ql5a75tlaa3c9fxrcq5fqsrksdpn Moduł:Ramka 828 44224 556516 553323 2026-09-15T07:47:15Z Persino 2851 556516 Scribunto text/plain local p={}; local function ParserBlokowy(frame, co_ma_wywolac) local pf=frame:getParent(); local nazwa_szablonu_modulu_lub_parsera="Nazwa"; local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera]; local argumenty_szablonu_modulu_lub_parsera={}; local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={}; local ramka_dane_modul=mw.loadData("Module:Ramka/dane"); local bez_parametrowa_tablica=ramka_dane_modul.bez_parametrowa_tablica; local bez_parametrow={}; if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end; local parametry_modul=require("Module:Parametry"); local tab_usun_parametry; local czy_usun=frame.args["usuń z parametrów ramki"]; if(parametry_modul.CzyTak(czy_usun))then tab_usun_parametry={}; local iter=mw.text.gsplit(czy_usun,";",true); for name in iter do name=mw.ustring.gsub(name,"^[%s_]*",""); name=mw.ustring.gsub(name,"[%s_]*$",""); name=tonumber(name) or name; tab_usun_parametry[name]=true; end; end; for nazwa_parametru,wartosc_parametru in pairs(frame.args) do if(((not tab_usun_parametry)or(not tab_usun_parametry[nazwa_parametru])) and((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru]))) )then tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru; argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru; end; end; local szablonowe_modul=require("Module:Szablonowe"); local tabela_bez_argumentow=p.RozpakujArgumenty(frame.args["bez argumentów rodzica"]); local zmienna_z_parametrami_rodzica=frame.args["zmienna z parametrami rodzica"]; local czy_przekazac_parametry_rodzica=zmienna_z_parametrami_rodzica and parametry_modul.CzyTak(zmienna_z_parametrami_rodzica) or false; ---- local frame_sprawdzenia_args=frame.args["bez dodatkowych sprawdzeń"]; local bez_dodatkowych_sprawdzen; local czy_podano_bez_dodatkowych_sprawdzen; if(frame_sprawdzenia_args)then czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_args and true or false; bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_args); else local frame_sprawdzenia_pf_args=pf.args["bez dodatkowych sprawdzeń"]; if(frame_sprawdzenia_pf_args)then czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_pf_args and true or false; bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_pf_args); end; end; local z_dodatkowymi_sprawdzeniami=not(bez_dodatkowych_sprawdzen); --- local PakujArgumentyRamki = function(args) local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"]; if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end; local tabelka1={}; for nazwa_parametru,_ in pairs(args)do if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))then tabelka1[nazwa_parametru]=true; end; end; local tabelka2=(args["bez argumentów szablonu"]) and p.RozpakujArgumenty(args["bez argumentów szablonu"]); local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2); local tablica_mikroszablonow={ [";"]="{{+}}", }; local str=""; for name,_ in pairs(tabelka) do str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow); end; return str,tabelka2; end; local nazwa_szablonu; local function TempFunc() if(not nazwa_szablonu)then local nazwa=szablonowe_modul.NazwaSzablonu(pf:getTitle()); nazwa_szablonu=nazwa; return nazwa; else return nazwa; end; end; local bez_argumentow_szablonu=nil; if(czy_przekazac_parametry_rodzica)then if(z_dodatkowymi_sprawdzeniami)then local str=p.PakujParametry(pf.args); argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str; end; argumenty_szablonu_modulu_lub_parsera["potomek"]="tak"; argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args); if(czy_podano_bez_dodatkowych_sprawdzen)then argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or ""; end; argumenty_szablonu_modulu_lub_parsera["nazwa szablonu przodka"]=pf.args["nazwa szablonu przodka"] or TempFunc(); argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or TempFunc(); else local function ZmiennaZNazwaSzablonuRodzica() local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"]; if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle()); end; argumenty_szablonu_modulu_lub_parsera["nazwa szablonu przodka"]=pf.args["nazwa szablonu przodka"] or TempFunc(); end; local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]); if(z_argumentami_najwyzszego_rodzica)then local potomek=parametry_modul.CzyTak(pf.args["potomek"]); if(potomek)then local parametry_rodzic=pf.args["parametry rodzica"]; if(parametry_rodzic)then if(z_dodatkowymi_sprawdzeniami)then argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic; end; argumenty_szablonu_modulu_lub_parsera["potomek"]="tak"; argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args); if(czy_podano_bez_dodatkowych_sprawdzen)then argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or ""; end; argumenty_szablonu_modulu_lub_parsera["nazwa szablonu przodka"]=pf.args["nazwa szablonu przodka"] or TempFunc(); argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or TempFunc(); else ZmiennaZNazwaSzablonuRodzica(); end; else ZmiennaZNazwaSzablonuRodzica(); end; else ZmiennaZNazwaSzablonuRodzica() end; end; local czy_bez_argumentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]); local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]); local czy_parametry_pudelka_podstawowe=parametry_modul.CzyTak(frame.args["parametry podstawowe funkcji modułu pudełek"]) local pudelko_modul=require("Module:Pudełko"); for nazwa_parametru,wartosc_parametru in pairs(pf.args) do if(((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))and((not bez_argumentow_szablonu)or(not bez_argumentow_szablonu[nazwa_parametru])))then if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]) and(not tabela_bez_argumentow[nazwa_parametru]) and((not czy_bez_argumentow_nienazwanych_rodzica)or((czy_bez_argumentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru))) ))then local czy_dodac_do_parametrow; if czy_parametry_pudelka or czy_parametry_pudelka_podstawowe then local czy_dodac_do_parametrow=((not czy_parametry_pudelka_podstawowe) and mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$") and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$") and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or ((not czy_parametry_pudelka_podstawowe) and mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$") and wartosc_parametru~="" and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$") and wartosc_parametru~="" and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or ((not czy_parametry_pudelka_podstawowe) and mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$") and wartosc_parametru~="" and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)) or (mw.ustring.match(nazwa_parametru,"^typ jednostki$") and wartosc_parametru~="" and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru)); if(czy_dodac_do_parametrow)then argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru; end; else argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru; end; end; end; end; if(co_ma_wywolac==0)then return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera}; elseif(co_ma_wywolac==1)then local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera}; local funkcja=frame.args["Funkcja"]; return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2); elseif(co_ma_wywolac==2)then return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera}; else return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera}; end; end; local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum) local parametry_modul=require("Module:Parametry"); local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]); local akapit=czy_akapit and "\n\n" or ""; local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or ""; local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]); local nowa_linia=czy_nowa_linia and "\n" or ""; local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]); local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]); local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]); local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]); local lancuch_znakow=""; local koniec=#tab_lancuch; for i=1,koniec,1 do local lancuch=tab_lancuch[i]; lancuch=mw.ustring.gsub(lancuch,"{{min}}",minimum); lancuch=mw.ustring.gsub(lancuch,"{{max}}",maksimum); if(not wyliczanka)then lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and "&nbsp;- " or ""))); else lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or "&nbsp;i ")); end; lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch; end; if(warunkowe)then local parametr=parametry_modul.CzyTak(frame.args["parametr"]); return p.InstrukcjeWarunkowe(lancuch_znakow,true,parametr); else return lancuch_znakow; end; end; p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe) local ciag_warunkowe_fun=function(s) local function ParserWiki(s,wywolanie) local czy_parser=mw.ustring.match(s,wywolanie); if(czy_parser)then return mw.getCurrentFrame():preprocess(s); end; end return ParserWiki(s,"^({{%s*#if:[^{}]*}})$") or ParserWiki(s,"^({{%s*#ifeq:[^{}]*}})$") or ParserWiki(s,"^({{%s*#switch:[^{}]*}})$") or ParserWiki(s,"^({{%s*#ifexpr:[^{}]*}})$") or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$") or ParserWiki(s,"^({{%s*#iferror:[^{}]*}})$") or ParserWiki(s,"^({{%s*#ifexist:[^{}]*}})$") or nil; end; local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun); if(derektywy_specjalne)then local ramka_dane_modul=mw.loadData("Module:Ramka/dane"); local tab_zamieniane=ramka_dane_modul.tablica_warunkowe_i_parametr; ciag=mw.ustring.gsub(ciag,"(__[^_]+__)",function(s) local tab_szablon=tab_zamieniane[s]; if(tab_szablon)then if(not derektywy_parametrowe)then return tab_szablon[1];end; return tab_szablon[2]; end; return nil; end); return ciag; end; return ciag; end; p.RozpakujArgumenty = function(zmienna_z_argumentami) local tablica_mikroszablonow={ ["{{+}}"]=";", }; local tabela_bez_argumentow={}; local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(zmienna_z_argumentami))then local iter=mw.text.gsplit(zmienna_z_argumentami,";",true); local podlancuch; for podlancuch in iter do podlancuch=mw.text.trim(podlancuch); local liczba=tonumber(podlancuch); tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true; end; end; return tabela_bez_argumentow; end; p.PakujParametry = function(args) return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS); end; p.RozpakujParametry = function (zmienna_z_parametrami) return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS); end; p["Rozwiń"] = function(frame) return frame:getParent():preprocess(frame.args[1]); end; p.Log = function(frame) local parametry_modul=require("Module:Parametry"); local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]); local wikitekst=frame.args["log"]; mw.log(wikitekst); return (czy_zwracac and wikitekst or ""); end; p.Szablon = function(frame) return ParserBlokowy(frame,0); end; p["Moduł"] = function(frame) return ParserBlokowy(frame, 1); end; p.Parser = function(frame) return ParserBlokowy(frame, 2); end; p.Q =function(frame) local parametry_modul=require("Module:Parametry"); local args_szablon=parametry_modul.PobierzArgsParametry(frame); local args_ksiazka={}; for name,value in pairs(args_szablon)do if(not parametry_modul.TypeNumber(name))then args_ksiazka[name]=value; elseif(name>1)then args_ksiazka[name-1]=value; elseif(name~=1)then args_ksiazka[name]=value; end; end; if(parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))then args_ksiazka["wyspecjalizowana"]=nil; end; local szablon=args_szablon[1]; local szablon_ksiazka=p["N"]{args={[1]=szablon,}}; local pf=frame:getParent(); return pf:expandTemplate{title=szablon_ksiazka,args=args_ksiazka,}; end; p.N=function(frame) local parametr=frame.args[1]; local parametry_modul=require("Module:Parametry"); local parametr_p=tonumber(frame.args["p"]) or 0; local parametr_n=parametry_modul.CzyTak(frame.args["n"]); local szablon=parametry_modul["CzyTakCiąg"](parametr) and parametr or ((parametr_p==1) and "Nieznany moduł" or ((parametr_p==2) and "Nieznana kategoria" or "Nieznany szablon")); szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local przestrzen=((parametr_p==1) and nazwy_np_modul.Module or ((parametr_p==2) and nazwy_np_modul.Category or nazwy_np_modul.Template)); local szablon_ksiazka=przestrzen..":Książka:"..szablon; local parametr_k=parametry_modul.CzyTak(frame.args["k"]); if(not parametr_k)then local techniczne_modul=require("Module:Techniczne"); local liczba_title,tab_title=techniczne_modul.PoliczZbiory{[1]=szablon_ksiazka,tekst=true,}; szablon_ksiazka=((liczba_title>0)and (szablon_ksiazka) or (przestrzen..":"..szablon)); end; if(parametr_n)then local nazwy_modul=require("Module:Nazwy"); szablon_ksiazka=nazwy_modul["NAZWASTRONY"]{nazwa=szablon_ksiazka,}; end; return szablon_ksiazka; end; p.A=function(frame) local parametr=frame.args[1]; local parametry_modul=require("Module:Parametry"); local parametr_p=parametry_modul.CzyTak(frame.args["p"]); local przestrzen; if(parametr_p)then local tabela_nazw={}; local nazwy_modul=require("Module:Nazwy"); przestrzen=nazwy_modul["NAZWAPRZESTRZENI"](parametr,tabela_nazw); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((przestrzen~=nazwy_np_modul.Template)and(przestrzen~=nazwy_np_modul.Module)and(przestrzen~=nazwy_np_modul.Category))then return parametr; end; parametr=nazwy_modul["NAZWASTRONY"](parametr,tabela_nazw); end; parametr=mw.ustring.gsub(parametr,"^[Kk]siążka:",""); parametr=(parametr_p and ((przestrzen~="") and (przestrzen..":") or "") or "")..parametr; return parametr; end; p.Powtarzaj = function(frame) local pf=frame:getParent(); local parametry_modul=require("Moduł:Parametry"); local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]); local tabela={}; local zacznij_nazwane; local parametry_modul=require("Module:Parametry"); if(czy_parametry)then local FormatujTabela=function(parametr_tab) return{ parametry_modul.CzyTak(parametr_tab[1]), parametry_modul.CzyTak(parametr_tab[2]), tonumber(parametr_tab[3]) or 0, tonumber(parametr_tab[4]), tonumber(parametr_tab[5]), }; end; local WstawDoTabeli=function(znaczenia_parametr) local parametr,wartosc=mw.ustring.match(znaczenia_parametr,"%s*([%w_%-][%w%s_%-]-)%s*=%s*(.-)%s*$"); if(parametr and wartosc)then if((not tonumber(parametr))and(not tabela[parametr]))then local parametr_tab=mw.text.split(wartosc,"%s*,%s*",false); tabela[parametr]=FormatujTabela(parametr_tab); end; else if((not tonumber(znaczenia_parametr))and(not tabela[znaczenia_parametr]))then tabela[znaczenia_parametr]={}; end; end; end; local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false); local czy=true; for znaczenia_parametr in iter do znaczenia_parametr=mw.text.trim(znaczenia_parametr); local czy_nie_omijac=parametry_modul.CzyTak(znaczenia_parametr); if(czy_nie_omijac)then if(czy)then zacznij_nazwane=tonumber(znaczenia_parametr); czy=false; if(not zacznij_nazwane)then zacznij_nazwane=0; WstawDoTabeli(znaczenia_parametr); end; else WstawDoTabeli(znaczenia_parametr); end; end; end; end; local tabela_dodatkowe={}; local czy_dodatkowe=parametry_modul.CzyTak(frame.args["dodatkowe"]); if(czy_dodatkowe)then local iter=mw.text.gsplit(mw.text.trim(frame.args["dodatkowe"]),"%s*;%s*",false); for name in iter do tabela_dodatkowe[name]=true; end; end; if(not zacznij_nazwane)then zacznij_nazwane=0;end; local function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana) local args=pf.args; local maksymalna_liczba_nazwy_danego_parametru=0; for nazwa_parametru, wartosc_parametru in pairs(args)do local czy_jedynka=false; if(type(nazwa_parametru)=="string")then local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%-%s]*[%a%-])(%s?)(%d+)$"); if(not nazwa_podstawy_parametru and not spacja and not liczba)then nazwa_podstawy_parametru=nazwa_parametru; spacja=""; liczba=1; czy_jedynka=true; end; local subtab=tabela[nazwa_podstawy_parametru]; if(subtab)then local nie_spacja_parametru=subtab[1]; local czy_z_jedynka=subtab[2]; liczba=tonumber(liczba) or 0; if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1)))) or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1)))) )then if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba); end; end; end; end; end; return maksymalna_liczba_nazwy_danego_parametru; end; local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function() local maksimum_all=0; for wartosc_parametru,dane_parametru in pairs(tabela)do if(parametry_modul.TypeString(wartosc_parametru))then if(not tabela_dodatkowe[wartosc_parametru])then local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru); local maksimum=maksymalna_liczba_nazwy_danego_parametru-(dane_parametru[3] or 0); maksimum_all=math.max(maksimum-zacznij_nazwane,maksimum_all); end; end; end; return maksimum_all; end; local zacznij_na_poczatku,skoncz_na_koncu; local tekst_do_analizy=frame.args[1]; if(not frame.args[1])then return "(brak parametru do analizy)";end; local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy); if(not czy_tekst)then return "(parametr do analizy pusty)";end; local start=frame.args["start"]; local koniec=frame.args["koniec"]; local czy_start=parametry_modul.CzyTak(start); local czy_koniec=parametry_modul.CzyTak(koniec); local zaznacz=frame.args["zaznacz"]; local tabela_zaznacz={}; if(zaznacz)then local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false) for liczba in iter do tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0; end; end; local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]); local czy_ma_nazwane; local function Wylicz_skoncz_na_koncu() czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela); if(czy_ma_nazwane)then if(czy_rozne)then local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]); if(not maks_numer)then return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args)); else return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args); end; else return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(); end; else return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args); end; end; local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu(); if(not czy_koniec)then skoncz_na_koncu=skoncz_na_koncu_wyliczona; else skoncz_na_koncu=math.max(math.min(skoncz_na_koncu_wyliczona, tonumber(koniec) or 0),0); end; zacznij_na_poczatku=math.max(tonumber(start) or 1,1); if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end; for name, tab_par in pairs(tabela)do local _4=tab_par[4];local _5=tab_par[5]; if(_4)then zacznij_na_poczatku=math.max(math.min(zacznij_na_poczatku,_4 or 1),1);end; if(_5)then skoncz_na_koncu=math.max(math.max(skoncz_na_koncu,_5 or 0),0);end; end; local czy_niepodane=parametry_modul.CzyTak(frame.args["niepodane"]); local czy_zero_element=false; if(czy_niepodane)then if(zacznij_na_poczatku>skoncz_na_koncu)then skoncz_na_koncu=zacznij_na_poczatku; czy_zero_element=true; end; end; local lancuch_znakow=""; local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or ""; if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end; local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]); local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]); local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]); local nie_wytnij_nazwane=parametry_modul.CzyTak(frame.args["nie wytnij nazwane"]); local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_"; local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru) local parametr_tab=tabela[nazwa_parametru]; if(parametr_tab)then return (not parametr_tab[1]),parametr_tab[2]; end; return true,false; end; if(not czy_rozne)then if(czy_ma_nazwane)then local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow) local tab_lancuch={}; local maksimum=0; local minimum; for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do local lancuch=tekst_do_analizy; local czy=nil; local wytnij_ujemne; for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do if(zmienne_parametrowe)then local subtab=tabela[zmienne_parametrowe]; local liczba_przesuniecia=subtab and subtab[3] or 0; local liczba=licznik+liczba_przesuniecia+zacznij_nazwane; ---- if(liczba<1)then wytnij_ujemne=true;end; if(liczba>0)then local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe); local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik]; local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element)))); local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe]))))); czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste))) or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu))) or ((wytnij_puste and not wytnij)and (parametry_modul.CzyTak(wartosc_elementu)))); local tabelka_szablonow={ ["{{".._i.."}}"]=licznik, ["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))), }; local function fun_tabelka_szablonow(ciag) local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}"); return tabelka_szablonow[ciag_strip] or ciag; end; lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow); end; end; end; if(not wytnij_ujemne)then local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik); czy=czy or czy_zero_element; if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then tab_lancuch[#tab_lancuch+1]=lancuch; maksimum=math.max(maksimum,licznik); minimum=math.min(minimum or licznik,licznik); end; end; end lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum); end; Analizuj_dla_bez_rozne(tabela); else local tab_lancuch={}; local maksimum=0; local minimum; for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do local element=pf.args[licznik] local czy=czy_zero_element or (((element)and ((not wytnij)and(not wytnij_puste))) or((wytnij)and(parametry_modul["CzyTakCiąg"](element))) or((wytnij_puste and not wytnij)and(parametry_modul.CzyTak(element)))); local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik); if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik); maksimum=math.max(maksimum,licznik); minimum=math.min(minimum or licznik,licznik); end; end; lancuch_znakow=BudowaSzereguZDanych(frame, tab_lancuch,minimum or 0,maksimum); end; else local function Analizuj_z_rozne(tabela_wszystkich_parametrow) local tab_lancuch={}; local maksimum=0; local minimum; for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do local czy=false; local czy_niepuste=false; local wytnij_ujemne=false; local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka) local wartosc,klucz; if(zmienne_parametrowe)then local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia) local liczba=licznik+liczba_przesuniecia+zacznij_nazwane; if(liczba<1)then wytnij_ujemne=true;end; if(liczba>0)then local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba]; local czy_jedynka=(liczba==1)and element; local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe]))))); czy_niepuste=czy_niepuste or ((not nie_wytnij_nazwane)and((wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu)) or (wytnij_puste and not wytnij and parametry_modul.CzyTak(wartosc_elementu))) or (nie_wytnij_nazwane and wartosc_elementu)); czy=czy or wartosc_elementu; wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or ""))); klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}"; end; end; local subtab=tabela[zmienne_parametrowe]; local liczba_przesuniecia=subtab and subtab[3] or 0; Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia); end; return klucz,wartosc; end; local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc) if((wartosc)and(klucz))then local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc); return przetwarzane; end; return ""; end; local lancuch_zaanalizowany=tekst_do_analizy; for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.."%s*{{%s*".._i.._i.."+%s*}}"); if(lokalizacja)then zmienne_parametrowe=mw.text.trim(zmienne_parametrowe); local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe); local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka); if(wytnij_ujemne)then break;end; lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc); end; end; if(not wytnij_ujemne)then local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}"); czy=czy_zero_element or czy or ((not zmienna_numerowana_wikikodu)and(mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")))or((zmienna_numerowana_wikikodu)and(pf.args[licznik])); local klucz="{{%s*".._i.."%s*}}"; local wartosc=licznik; lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc); czy_niepuste=czy_zero_element or czy_niepuste or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik])) or (wytnij_puste and not wytnij and parametry_modul.CzyTak(pf.args[licznik])); local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik); if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany; maksimum=math.max(maksimum,licznik); minimum=math.min(minimum or licznik,licznik); end; end; end; lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum); end; Analizuj_z_rozne(tabela); end; if(#lancuch_znakow==0)then return gdy_nic;end; local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow; return przetworzony_wikikod; end; p.PowtarzajOdDo=function(frame) local start=tonumber(frame.args["start"]); local koniec=tonumber(frame.args["koniec"]); local krok=tonumber(frame.args["krok"]) or 1; local parametry_modul=require("Module:Parametry") local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or ""); if((not start)or(not koniec))then return "";end; if(krok==0)then return "";end; if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end; local kod=frame.args[1]; tabela_mikroszablonow={ ["{{start}}"]=start, ["{{koniec}}"]=koniec, ["{{krok}}"]=krok, } kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow); local lancuch=""; local licznik=start; local kodprzeskok=frame.args["przeskok"]; local pf=frame:getParent(); while licznik<=koniec do local przeskok; if(kodprzeskok)then local _; przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik); przeskok=pf:preprocess(przeskok); end; local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik); lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2; licznik=licznik+krok+(tonumber(przeskok) or 0); end; local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch; return przetworzony_wikikod; end; p["PrzetwarzajIterującCiąg"]=function(frame) local poziom=frame.args["ciąg"]; poziom=mw.text.trim(poziom); local tab_poziom=mw.text.split(poziom,"%s*;%s*",false); local len_tab_poziom=#tab_poziom; local start=1;local koniec=len_tab_poziom;local krok=1; tabela_mikroszablonow={ ["{{start}}"]=start, ["{{koniec}}"]=koniec, ["{{krok}}"]=krok, } local parametry_modul=require("Module:Parametry"); local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or ""); local kod=frame.args[1]; kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow); local lancuch=""; local licznik=start; local kodprzeskok=frame.args["przeskok"]; if(kodprzeskok)then kodprzeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_mikroszablonow); end; local pf=frame:getParent(); while licznik<=koniec do local przeskok; local tabela_microszablonow2={ ["{{_}}"]=licznik, ["{{ciąg}}"]=tab_poziom[licznik]; }; if(kodprzeskok)then przeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_microszablonow2); przeskok=pf:preprocess(przeskok); end; local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2); lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2; licznik=licznik+krok+(tonumber(przeskok) or 0); end; local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch; return przetworzony_wikikod; end; p["PowtarzajWedług"] = function(frame) local start=tonumber(frame.args["start"]) or 1; local wybrany_wzor=frame.args["wzór"]; local parametry_modul=require("Module:Parametry") local czy_link=parametry_modul.CzyTak(frame.args["link"]); local liczba_list=p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}}; local lancuch=""; local linki_modul=require("Module:S"); for i=start,liczba_list,1 do local wybrany_link_lub_bez; local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i)); if czy_link then wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez}; end; lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez; end; return lancuch; end; p["LiczbaPrawychUkośników"] = function(frame) local nazwa=frame.args[1]; local _,ile=mw.ustring.gsub(nazwa,"/",function(s)return nil;end); return ile; end; p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame) local start=tonumber(frame.args["start"]) or 1; licznik=start; local strona=frame.args["wzór"]; while true do local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik); local title=mw.title.makeTitle('',strona2); if((not title) or (not title.exists))then return licznik-1; end; licznik=licznik+1; end; end; p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame) local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local pf=frame:getParent(); local parametr=frame.args["zmienna"]; local numerowane=frame.args["numerowane"]; parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr); local czy_numerowane=parametry_modul.CzyTak(numerowane); local numer=nil; for name,value in pairs(pf.args)do local __name=tostring(name); local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$"); __numer=tonumber(__numer) or (((__numer)and(__numer=="")) and 1 or nil); if((__numer)or((czy_numerowane)and(parametry_modul.TypeNumber(name))))then if(numer)then numer=math.min(__numer or name,numer); else numer=__numer or name; end; end; end; return numer; end; p.IleJestTakichOdpowiednikowychZmiennych=function(frame) local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local pf=frame:getParent(); local parametr=frame.args["zmienna"]; local numerowane=frame.args["numerowane"]; parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr); local czy_numerowane=parametry_modul.CzyTak(numerowane); local numer=0; local tab={}; for name,value in pairs(pf.args)do local __name=tostring(name); local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$"); if((not tab[name])and((__numer)or((czy_numerowane)and(parametry_modul.TypeNumber(name)))))then numer=numer+1; tab[tonumber(__numer) or(((__numer)and(__numer==""))and 1 or nil) or name]=true; end; end; return numer; end; p["Parametr w tablicy nazw"]=function(frame) local zmienna_z_argumentami=frame.args["parametry"]; if(not zmienna_z_argumentami)then return;end; local jedna_pozycja=frame.args["pozycja"]; if(not jedna_pozycja)then return;end; local parametry_modul=require("Module:Parametry"); jedna_pozycja=parametry_modul["Odstępy"]{[1]=jedna_pozycja,[2]="tak"}; if(jedna_pozycja=="")then return;end; local od_duzej=parametry_modul.CzyTak(frame.args["od dużej"]); jedna_pozycja=od_duzej and mw.getContentLanguage():ucfirst(jedna_pozycja) or jedna_pozycja; local iter=mw.text.gsplit(zmienna_z_argumentami,";",true); local tablica={}; for pozycja in iter do pozycja=parametry_modul["Odstępy"]{[1]=pozycja,[2]="tak"}; if(pozycja~="")then tablica[od_duzej and mw.getContentLanguage():ucfirst(pozycja) or pozycja]=true; end; end; return (tablica[jedna_pozycja] and "tak" or nil); end; return p; edfhhhjrehfgr4qpljefb3dpovzduzm Moduł:StronicowyParser/ZbieranieDanychStron 828 55009 556342 555457 2026-09-14T16:10:10Z Persino 2851 556342 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,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,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,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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return lista_dwuelementowa; end; end; function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(nazwa_artykulu=="")then return;end; local czy_element_wystepuje_w_tablicy=false; local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron; if(tablica_przestrzeni_wszystkiego)then local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni]; if(tabela_przestrzeni_ksiazek)then local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki] if(tabela_ksiazek)then local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki]; if(tab_ksiazki)then if(tab_ksiazki.spis)then --czy_lista_niepusta=true; local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); for _,tab_value in ipairs(tab_ksiazki.spis)do if(tab_value[2])then for _,artykul_w_bazie_element in ipairs(tab_value[2])do local artykul_w_bazie=artykul_w_bazie_element[1]; local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie); artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie; local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie); if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then czy_element_wystepuje_w_tablicy=true; break; end; end; end; if(czy_element_wystepuje_w_tablicy)then break;end; end; end; end; end; end; end; if(not czy_element_wystepuje_w_tablicy)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki) or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"); end; end; end; end; end; function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu) local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil; local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil; local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1); end; end; if(czy_artykul_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2); end; end; if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3); end; end; end; function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe) local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2]; local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3]; local parametry_modul=require("Module:Parametry"); local nazwy_modul=require("Module:Nazwy"); local html_modul=require("Module:Html"); if(nazwa_artykulu)then nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",}; end; local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni; if(pelna_nazwa_ksiazki)then pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true); local techniczne_modul=require("Module:Techniczne"); pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_modulu_aktualna_czy_biezaca,}; ---- local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw))); --pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); end; return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; end; function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu; if(not czy_inna_wartosc_tekst)then nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true); else nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4]; end; --local ksiazkowe_modul=require("Module:Książkowe"); --pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](); --nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](); if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then local tabela_nazw={}; local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw); local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw); local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false); end; end; function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie) local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end; local parametry_modul=require("Module:Parametry"); if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end; local szablonowe_modul=require("Module:Szablonowe"); if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu())) or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu())) )then return;end; local nazwy_modul=require("Module:Nazwy"); local ksiazkowe_modul=require("Module:Książkowe"); local html_modul=require("Module:Html"); if(nazwa_jednostki)then nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true); end; local tabela_nazw_art={}; local nazwa_jednostki=(nazwa_jednostki and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1") or nil ) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art); if(nazwa_przestrzeni)then nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true); end; local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art); local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,}; --strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona); local tabela_nazw={}; local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw))); local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw); if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end; local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej); end; function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca) local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); local nazwy_modul=require("Module:Nazwy"); local czy_inna_wartosc_tekst=true; if((nazwa_artykulu)and(nazwa_ksiazki))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((nazwa_artykulu)and(not nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); elseif((not nazwa_artykulu)and(nazwa_ksiazki))then local ksiazkowe_modul=require("Module:Książkowe"); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"](); local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"](); ---- tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); else p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,}); end; end; function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE) local pudelko_modul=require("Module:Pudełko"); if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni==""))) and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki==""))) and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki))) and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu==""))) )then if(__FUNKCJA_SPRAWDZANIE)then __FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki) and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"); end; else if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"); end; end; end; end; function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu]; local parametry_modul=require("Module:Parametry"); if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then local parametry_modul=require("Module:Parametry"); local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; tablica_zmiennych.sprawdzenie_dokonane_linku=true; end; table.insert(linkobiekttab,uchwyt_obiektu); if(czy_pobierz)then if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={}; end; table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); end; end; function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz) p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function() local parametry_modul=require("Module:Parametry"); if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then local tablica_zmiennych2={}; tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={} local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2); if(tabela_listy_danych_analizy_ksiazki0)then if((not czy_inna)or(not tablica_zmiennych2))then return;end; local stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local JuzPoliczone=function() if(czy_pobierz)then stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false); end; if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end; local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; if(not tab_nazwa_obiektu)then tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={}; tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]; end; local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu]; if(tab_uchwyt)then return true; end; tab_nazwa_obiektu[uchwyt_obiektu]=true; return false; end; if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then local czy_policzone=JuzPoliczone(); if(czy_policzone)then return; end; else JuzPoliczone(); end; stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2); p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu); local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu]; local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink; local ile_razy=0; if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do if(parametry_obiektu[1]==uchwyt_obiektu)then ile_razy=ile_razy+1; if(ile_razy>1)then break;end; end; end; end if(ile_razy~=1)then local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu); end; p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"); end; end; else p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; end); end; function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz) local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1]; local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca); ---- local parametry_modul=require("Module:Parametry"); if(parametry_modul.CzyTak(uchwyt_obiektu))then local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu; local html_modul=require("Module:Html"); uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true); end; ---- local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); ---- if(parametry_modul.CzyTak(uchwyt_obiektu))then nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); if(nazwa_artykulu)then if(nazwa_artykulu~="")then if(not nazwa_ksiazki)then nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; elseif(nazwa_ksiazki=="")then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; end; elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then nazwa_artykulu=""; elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); return; else nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; end; if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni) or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu) or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu) or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz); else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; else p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz) p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); end; elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil); p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu); stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu); end; KtorySzablonMaZwracacKategorie(uchwyt_obiektu); end; function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej) local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end; local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end; local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki]; if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end; local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki]; if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end; if(nazwa_artykulu)then if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end; local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]; return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; else return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; end; end; local korzystany_wolumin=false; local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if(not czy_artykul_korzystany)then if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then korzystany_wolumin=true; if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; end; else return nil; end; else korzystany_wolumin=true; end; if(self.tabela_listy_danych_analizy_ksiazki)then if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; if(tabela_przestrzeni)then local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki]; if(tabela_przestrzeni_ksiazki)then local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki]; if(tabela_ksiazka)then local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu; if(lista_artykolow)then local tabela_artykul=lista_artykolow[nazwa_artykulu]; if(tabela_artykul)then local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron; ---- if(not czy_artykul_korzystany)then if(tabela_artykul.TOCSPIS_FUNCTION)then local wynik=tabela_artykul.TOCSPIS_FUNCTION(); if(wynik)then tabela_artykul.TOCSPIS_FUNCTION=nil; end; end; end; return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; end; end; end; end; end; else return nil; end; else return nil; end; return true; end; local nazwy_modul=require("Module:Nazwy"); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then --local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; end; if(not wartosc_wyniku)then return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; elseif(wartosc_wyniku==0)then if(tabela_artykul)then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; else return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; end; end; ---- local pozawoluminowe_strony; ---- local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy"); if((nazwa_przestrzeni~=nazwy_np_modul.Main) and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior) and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))) and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$"))) )then stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); pozawoluminowe_strony=true; end; ---- local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local parametry_modul=require("Module:Parametry"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); ---- local tekst_rozwiniety_calego_artykulu_ref=nil; local tablica_analizy_obiektow_strony_dany_modul_ref=nil; local tablica_danych_parametrow_szablonu_strony_ref=nil; ---- local function InneInformacjePrzebneDoAnalizowanejKsiazki() if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end; end; local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false; if(not czy_ksiazka_istnieje_w_tablicy)then tablica_ksiazki.czy_spis_analizowano=true; local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści"); local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp; local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona) local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona]; if(tablica_przestrzeni_strona)then local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona]; if(tablica_przestrzeni_ksiazki_strona)then local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona]; if(tablica_ksiazki_strona)then if(tablica_ksiazki_strona.spis)then nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona; tablica_ksiazki.spis=tablica_ksiazki_strona.spis; tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja; tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu; tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy; tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; return 1; end; end; end end; end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis) ---- if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis; local parametry_modul=require("Module:Parametry"); tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis); tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis); end; ---- end); local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres) tablica_ksiazki.spis=tabela_artykulow; if(czy_artykul_korzystany)then tablica_ksiazki.licencja=tabela_licencji_spisu_tresci; end; tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu; tablica_ksiazki.tab_inne_spisy=tab_inne_spisy; tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly; tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil; end; if(tabela_artykulow==0)then if(czy_artykul_korzystany)then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje"); else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; elseif(tabela_artykulow)then if(parametry_modul.TypeTable(tabela_artykulow))then if(adres_ksiazki_glownego_spisu_tresci)then __FUNKCJA_SPISU(tablica_ksiazki,true); local tablica_ksiazki_stara=tablica_ksiazki; local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1]; local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2]; local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3]; if((kod_wyniku==1)or(kod_wyniku==2))then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then local nazwa_artykulu=artykul; StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; elseif((kod_wyniku==3)or(kod_wyniku==4))then local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul); tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,}; __FUNKCJA_SPISU(tablica_ksiazki,false); return nil,nil,artykul,kod_wyniku; end; else __FUNKCJA_SPISU(tablica_ksiazki,false); end; elseif(tabela_artykulow~=1)then local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku,true; elseif((wartosc_wyniku==0)and(tabela_artykul))then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku,true; end; end; else if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); end; end; end; end; end; end; ---- local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); if(wynik_bledu)then return wartosc_wyniku;end; local kod_wyniku_przekierowan=kod_wyniku_bazowy; ---- --if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then -- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); --end; ---- if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then ---- nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1]; nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2]; nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3]; nazwa_artykulu=artykul_bazowy; ---- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3]; end; local tabela_artykulow=tablica_ksiazki.spis; if(tabela_artykulow)then local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu; local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy; local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false); if(kod_wyniku)then nazwa_artykulu=artykul; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); end; kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku; end; local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local PrzekierownieAwaryjne=function() if(not kod_wyniku_przekierowan)then --local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true); local techniczne_modul=require("Module:Techniczne"); local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu); if(strona)then if(strona~=nazwa_modulu)then ---- local tabela_nazw={}; nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw); nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw); nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)); nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa); local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(not wartosc_wyniku)then return wartosc_wyniku; elseif(wartosc_wyniku==0)then if(tabela_artykul)then StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); return wartosc_wyniku; else return wartosc_wyniku; end; end; tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); nazwa_modulu=strona; else return 0; end; end; end; end; local wynik=PrzekierownieAwaryjne(); if(czy_artykul_korzystany)then self.nazwa_modulu_biezaca=nazwa_modulu; end; if(wynik)then return wynik;end; ---- if(czy_artykul_korzystany)then if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni; self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki; self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu; end; end; local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu; -- przydzielanie tablicy if(czy_artykul_korzystany)then artykul_analizowany.artykul_biezacy=true; tablica_ksiazki.ksiazka_analizowana=true; end; --koniec --local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}"); if(not tablica_zmiennych)then tablica_zmiennych={};end; if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do local CzyLink=element_w_tablicy_obiekt.CzyLink; local CzyNum=element_w_tablicy_obiekt.CzyNum; local wartosc=element_w_tablicy_obiekt[1]; tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,}; if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end; end; local function StronaZbiorcza() if(czy_artykul_korzystany)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); artykul_analizowany.strona_zbiorcza=(wynik and "tak" or ""); return wynik; end; return nil; end; local strona_zbiorcza=StronaZbiorcza(); local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,""); local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); ---- local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil), nil) else tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref; end; ---- if(not czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then return 0;end; end; if(czy_artykul_korzystany)then if(not tekst_rozwiniety_calego_artykulu)then if(strona_zbiorcza)then self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak"; end; return nil; end; end; local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu); if(tekst)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu); local tablica_danych_parametrow_szablonu_strony={}; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return true; elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return true; end; end); if(wynik)then break;end; end; end; end; end; local uzyskano_w_wyniku_parsowania_wywolanie_szablonu; local analiza_stron_korzystanych_zbiorczych=nil; local stronastart=nil; ---- local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze; local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu; local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu; ---- local strona_start=stronicowyparser_obiekty_modul.strona_start; local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony; local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne; local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza; ---- local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe; local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe; local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego; ---- local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tabela_elementow_strony_kodow={}; -- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) if(czy_artykul_korzystany)then if(tabela_parametrow_szablonu)then if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then if(strona_start[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"]; stronastart=true; local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or ""; local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC"; if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; stronastart=true; return; elseif(strona_start_inne[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak"; self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak"; stronastart=true; return; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then analiza_stron_korzystanych_zbiorczych=true; local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"]; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"]; if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then return; end; end; end; end; local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:"); if(plik==nil)then if(tabela_parametrow_szablonu)then if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie"); local czy_linkobiekt; local czy_link;local czy_pobierz; local czy_wypowiedzenie_z_parametrami; local czy_linkobiekt_z_parametrami; if(czy_wypowiedzenie)then czy_linkobiekt=false; czy_link=false; czy_pobierz=false; czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]); else czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt"); if(czy_linkobiekt)then czy_link=true; czy_pobierz=false; czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]); else czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link"); czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil; end; end; if((not czy_link)and(not czy_pobierz))then local wartosc_elementu;local numer_uchwytu; if(not czy_wypowiedzenie_z_parametrami) then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; else local rodzaj=tabela_parametrow_szablonu["rodzaj"]; if(rodzaj)then wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil; if(wartosc_elementu)then numer_uchwytu=tablica_obiekty[5]; end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; end; elseif(czy_artykul_korzystany)then if(czy_link)then local wartosc_elementu; if(not czy_linkobiekt_z_parametrami)then wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania]; else local typ=tabela_parametrow_szablonu["typ"]; if(typ)then typ=format_elementowy_referencji_obiektowy[typ] and typ or nil; if(typ)then wartosc_elementu=mw.getContentLanguage():ucfirst(typ); end; end; end; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; end; end; elseif(czy_pobierz)then local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; if(wartosc_elementu)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true); return; end; end; end; if(czy_wypowiedzenie)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; end; return; elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania]; local wartosc_elementu;local numer_uchwytu; if(tab_wartosc_elementu)then wartosc_elementu=tab_wartosc_elementu[1]; numer_uchwytu=tab_wartosc_elementu[2]; end; local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(czy_artykul_korzystany)then if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then if(uchwyt_obiektu and (uchwyt_obiektu~=""))then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; end; end; local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); if(lista_dwuelementowa)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu); local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu); local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess); if(tekst)then local czy_szablon_wszystko=false; tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul, function(szablon,obiekt,kod) if(czy_bez_preprocess)then return nil;end; if(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if( (tab_szablony[nazwa_szablonu]) or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) )then if(not czy_artykul_korzystany)then tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni; tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or "")) if(self)then local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz"); if(czy_link_lub_pobierz)then p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); end; end; end; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end; return nil; end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- instrukcje warunkowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- wywołania ramek Lua w Scribunto return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) ---- tagi szablonowe; return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true); end); czy_szablon_wszystko=czy_szablon_wszystko or true; if(wynik)then return wynik;end; elseif(obiekt=="ZMIENNA")then czy_szablon_wszystko=czy_szablon_wszystko or true; local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$"); if(zawartosc)then zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}"); return "{{(((}}"..zawartosc.."{{)))}}"; end; end; end); if((czy_szablon_wszystko)and(not bez_preprocess))then local frame=mw.getCurrentFrame(); tekst=frame:preprocess(tekst); end; lista_dwuelementowa[2]=tekst; end; --local __metatabelka=getmetatable(tabela_parametrow_szablonu); --if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end; stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany); end; return; elseif(czy_artykul_korzystany)then if(czy_linkobiekt)then local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or ""); end; end; p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie); return; else if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; return; elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil; if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true; self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; else self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil; end; return; elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or ""; local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or ""; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "") end; end; local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]); local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]); local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]); local dokumentacja=tabela_parametrow_szablonu["dokumentacja"]; local czy_dokumentacja; if(not dokumentacja)then czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser; else czy_dokumentacja=parametry_modul.CzyTak(dokumentacja); end; if( ((czy_dokumentacja)and(czy_parser)) or((not czy_dokumentacja)and(czy_analiza)) )then p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie); end; return; else local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ""; local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ""; local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony; self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt; end; end; if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania]) or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]) )then if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); else p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie); end; return; elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie); return; end; end; end; end; end; end; end; end; ---- local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer) stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego); end; local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer); end; end; if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu); end; IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu); ---- local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {}; tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; ---- local wiki_modul=require("Module:Wiki"); tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},}; if(not czy_artykul_korzystany)then if(pozawoluminowe_strony)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; end; else local niekorzystany_wolumin=(not korzystany_wolumin); if(niekorzystany_wolumin)then if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki); tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,}; end; end; end; end; ---- if(czy_artykul_korzystany)then if(analiza_stron_korzystanych_zbiorczych)then local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst"); tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); end; end; local strona; if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end; ---- if(czy_artykul_korzystany)then local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu"); stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych); tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu; end; ---- local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca) return function() if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane)) or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then ---- local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil; ---- tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false); ---- local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki) if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu) if(czy_artykul_korzystany)then if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; else stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki); if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or ""); end; end; end; local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu() return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"); end; local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu; local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron"); local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka]; tablica_naglowka_obiekty.uchwyty_bez_numeracji={}; local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow); tablica_danych_nazwy_artykulu.TOC=toc; return true; end; end; end; local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca); local wynik=czy_spis_function(); if(not czy_artykul_korzystany)then if(not wynik)then tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function; end; end; StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); if(czy_artykul_korzystany)then self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane; self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]; self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki]; self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki]; --self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych; end; if(not czy_artykul_korzystany)then tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych; if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end; table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu); else local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista; if(dane_zebrane_ze_stron_lista)then for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil; tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil; end; end; tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil; end; return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; end; return p; 7c3httr427z34ckb8wo3562xl4sutnh Wikibooks:Księgozbiór/Podręczniki w układzie alfabetycznym 4 56294 556447 517415 2026-09-15T02:21:03Z Persino 2851 556447 wikitext text/x-wiki <noinclude><!-- -->{{ProstaStronaStart}}<!-- -->__NOTOC__<!-- --></noinclude> {{Blok ramkowy|temat=10|tytuł=Podręczniki w układzie alfabetycznym|ikonka=Oxygen15.04.1-kthesaurus.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=45px|60px}}|margines={{{margines|0 0 2px 0}}}}} '''Przeglądaj podręczniki:''' {{lr|Księgozbiór}} • {{lru|Księgozbiór/Wybrane}} • {{lru|Księgozbiór/Alfabetycznie}} • {{lru|Księgozbiór/Tematycznie}} • {{lk|Kategorie podręcznikowe|Według kategorii}} • {{lr|Księgozbiór/Poziom|Według poziomu}} • {{lr|Księgozbiór/Status|Według rozwoju}} • {{lk|Wikijunior}}. {{Blok ramkowy/Zamknij}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Metastrony Wikibooks}}<!-- --></noinclude> e3vsx74tvk6ld3a3ueuz7842bp0o9dc 556452 556447 2026-09-15T02:24:42Z Persino 2851 556452 wikitext text/x-wiki <noinclude><!-- -->{{ProstaStronaStart}}<!-- -->__NOTOC__<!-- --></noinclude><!-- -->{{Blok ramkowy|temat=10|tytuł=Podręczniki w układzie alfabetycznym|ikonka=Oxygen15.04.1-kthesaurus.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=45px|60px}}|margines={{{margines|0 0 2px 0}}}}} '''Przeglądaj podręczniki:''' {{lr|Księgozbiór}} • {{lru|Księgozbiór/Wybrane}} • {{lru|Księgozbiór/Alfabetycznie}} • {{lru|Księgozbiór/Tematycznie}} • {{lk|Kategorie podręcznikowe|Według kategorii}} • {{lr|Księgozbiór/Poziom|Według poziomu}} • {{lr|Księgozbiór/Status|Według rozwoju}} • {{lk|Wikijunior}}. {{Blok ramkowy/Zamknij}}<!-- --><noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Metastrony Wikibooks}}<!-- --></noinclude> 09mdn5mvns0h30isgmyyt3onrhaiz3m Wikibooks:Księgozbiór/Portale 4 56295 556446 543996 2026-09-15T02:19:53Z Persino 2851 556446 wikitext text/x-wiki <noinclude><!-- -->{{ProstaStronaStart}}<!-- -->__NOTOC__<!-- --></noinclude> {{Blok ramkowy|temat=10|tytuł=Portale|ikonka=One wikibook.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=50px|#default=60px}}|margines={{{margines|0 0 2px 0}}}}} '''Przeglądaj portale:''' {{lo|Nauki ścisłe i przyrodnicze|f=Portal}} • {{lo|Informatyka|f=Portal}} • {{lo|Nauki techniczne|f=Portal}} • {{lo|Nauki społeczne i humanistyczne|f=Portal}} • {{lo|Sport i rozrywka|f=Portal}} • {{lo|Hobby, poradniki i książki różne|f=Portal}}. {{Blok ramkowy/Zamknij}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Metastrony Wikibooks}}<!-- --></noinclude> t66w14cagpfx2g0te93duz6weuhwyrm 556449 556446 2026-09-15T02:23:09Z Persino 2851 556449 wikitext text/x-wiki <noinclude><!-- -->{{ProstaStronaStart}}<!-- -->__NOTOC__<!-- --></noinclude><!-- -->>{{Blok ramkowy|temat=10|tytuł=Portale|ikonka=One wikibook.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=50px|#default=60px}}|margines={{{margines|0 0 2px 0}}}}} '''Przeglądaj portale:''' {{lo|Nauki ścisłe i przyrodnicze|f=Portal}} • {{lo|Informatyka|f=Portal}} • {{lo|Nauki techniczne|f=Portal}} • {{lo|Nauki społeczne i humanistyczne|f=Portal}} • {{lo|Sport i rozrywka|f=Portal}} • {{lo|Hobby, poradniki i książki różne|f=Portal}}. {{Blok ramkowy/Zamknij}}<!-- --><noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Metastrony Wikibooks}}<!-- --></noinclude> nmtyl65r9mo5edx5qnahpwkohia50xg 556450 556449 2026-09-15T02:23:30Z Persino 2851 556450 wikitext text/x-wiki <noinclude><!-- -->{{ProstaStronaStart}}<!-- -->__NOTOC__<!-- --></noinclude><!-- -->{{Blok ramkowy|temat=10|tytuł=Portale|ikonka=One wikibook.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=50px|#default=60px}}|margines={{{margines|0 0 2px 0}}}}} '''Przeglądaj portale:''' {{lo|Nauki ścisłe i przyrodnicze|f=Portal}} • {{lo|Informatyka|f=Portal}} • {{lo|Nauki techniczne|f=Portal}} • {{lo|Nauki społeczne i humanistyczne|f=Portal}} • {{lo|Sport i rozrywka|f=Portal}} • {{lo|Hobby, poradniki i książki różne|f=Portal}}. {{Blok ramkowy/Zamknij}}<!-- --><noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Metastrony Wikibooks}}<!-- --></noinclude> 5spprcuqjs3jpbt5b71h9pkvqoblmxa Wikibooks:Księgozbiór/Spis alfabetyczny 4 56313 556448 517417 2026-09-15T02:22:21Z Persino 2851 556448 wikitext text/x-wiki <noinclude><!-- -->{{ProstaStronaStart}}<!-- -->__NOTOC__<!-- --></noinclude> {{Blok ramkowy|temat=10|tytuł={{lk|Spis alfabetyczny|według spisu alfabetycznego}}|szerokość=100%|margines={{{margines|0}}}}} {{Center|{{lku|Spis alfabetyczny/A}} {{lku|Spis alfabetyczny/B}} {{lku|Spis alfabetyczny/C}} {{lku|Spis alfabetyczny/Ć}} {{lku|Spis alfabetyczny/D}} {{lku|Spis alfabetyczny/E}} {{lku|Spis alfabetyczny/F}} {{lku|Spis alfabetyczny/G}} {{lku|Spis alfabetyczny/H}} {{lku|Spis alfabetyczny/I}} {{lku|Spis alfabetyczny/J}} {{lku|Spis alfabetyczny/K}} {{lku|Spis alfabetyczny/L}} {{lku|Spis alfabetyczny/Ł}} {{lku|Spis alfabetyczny/M}} {{lku|Spis alfabetyczny/N}} {{lku|Spis alfabetyczny/O}} {{lku|Spis alfabetyczny/Ó}} {{lku|Spis alfabetyczny/P}} {{lku|Spis alfabetyczny/Q}} {{lku|Spis alfabetyczny/R}} {{lku|Spis alfabetyczny/S}} {{lku|Spis alfabetyczny/Ś}} {{lku|Spis alfabetyczny/T}} {{lku|Spis alfabetyczny/U}} {{lku|Spis alfabetyczny/V}} {{lku|Spis alfabetyczny/W}} {{lku|Spis alfabetyczny/X}} {{lku|Spis alfabetyczny/Y}} {{lku|Spis alfabetyczny/Z}} {{lku|Spis alfabetyczny/Ź}} {{lku|Spis alfabetyczny/Ż}} ({{lk|Wszystkie książki|Wszystkie}})}} {{Blok ramkowy/Zamknij}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Metastrony Wikibooks}}<!-- --></noinclude> m52ufvxkjbiiii0vwts580jm86d7aar 556451 556448 2026-09-15T02:24:05Z Persino 2851 556451 wikitext text/x-wiki <noinclude><!-- -->{{ProstaStronaStart}}<!-- -->__NOTOC__<!-- --></noinclude><!-- -->{{Blok ramkowy|temat=10|tytuł={{lk|Spis alfabetyczny|według spisu alfabetycznego}}|szerokość=100%|margines={{{margines|0}}}}} {{Center|{{lku|Spis alfabetyczny/A}} {{lku|Spis alfabetyczny/B}} {{lku|Spis alfabetyczny/C}} {{lku|Spis alfabetyczny/Ć}} {{lku|Spis alfabetyczny/D}} {{lku|Spis alfabetyczny/E}} {{lku|Spis alfabetyczny/F}} {{lku|Spis alfabetyczny/G}} {{lku|Spis alfabetyczny/H}} {{lku|Spis alfabetyczny/I}} {{lku|Spis alfabetyczny/J}} {{lku|Spis alfabetyczny/K}} {{lku|Spis alfabetyczny/L}} {{lku|Spis alfabetyczny/Ł}} {{lku|Spis alfabetyczny/M}} {{lku|Spis alfabetyczny/N}} {{lku|Spis alfabetyczny/O}} {{lku|Spis alfabetyczny/Ó}} {{lku|Spis alfabetyczny/P}} {{lku|Spis alfabetyczny/Q}} {{lku|Spis alfabetyczny/R}} {{lku|Spis alfabetyczny/S}} {{lku|Spis alfabetyczny/Ś}} {{lku|Spis alfabetyczny/T}} {{lku|Spis alfabetyczny/U}} {{lku|Spis alfabetyczny/V}} {{lku|Spis alfabetyczny/W}} {{lku|Spis alfabetyczny/X}} {{lku|Spis alfabetyczny/Y}} {{lku|Spis alfabetyczny/Z}} {{lku|Spis alfabetyczny/Ź}} {{lku|Spis alfabetyczny/Ż}} ({{lk|Wszystkie książki|Wszystkie}})}} {{Blok ramkowy/Zamknij}}<!-- --><noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Metastrony Wikibooks}}<!-- --></noinclude> dz6j4tmp66m4ljbe1p2f3u634uvh3r2 Szablon:Opis kategorii/silnik 10 57974 556454 545073 2026-09-15T02:44:16Z Persino 2851 556454 wikitext text/x-wiki <includeonly><div class="strona-opis-kategorii-infoboksy siostrzane-zmienna-strona-opis-kategorii-nawigacja">{{#if:{{{nawigacja|}}}|<!-- -->{{{nawigacja}}}<!-- -->|}}</div><!-- --><div class="strona-opis-kategorii-infoboksy siostrzane-zmienna-strona-opis-kategorii-infoboksy">{{#if:{{{siostrzane|}}}|<!-- -->{{{siostrzane}}}<!-- -->|}}</div><!-- --><div class="strona-opis-kategorii-infoboksy siostrzane-projekty-kategorii-strona-opis-kategorii-infoboksy">{{{siostrzane projekty|}}}</div><!-- --><div class="strona-opis-kategorii-infoboksy typ-kategorii-strona-opis-kategorii-infoboksy"><!-- -->{{#switch:{{FULLPAGENAME}} | {{ns:Category}}:Kategorie = {{Główna kategoria}} | {{Ns:Category}}:Metastrony Wikibooks = {{Główna kategoria}}{{Metakategoria}} | {{Ns:Category}}:Kategorie dla kategorii = {{Metakategoria|ukryta=tak|kontener=tak}}<!-- -->}}</div><div class="strona-opis-kategorii-infoboksy kategorie-dla-kategorii-strona-opis-kategorii-infoboksy">{{#if:{{{kategoria dla kategorii|}}}|{{Kategoria dla kategorii}}}}</div>{{#if:{{{bez kolumn|}}}||<div id="strona-opis-kategorii-overflow-zawartość" class="strona-opis-kategorii-overflow-zawartość mw-overflow-x" style="overflow:auto;width:auto;box-sizing:border-box;"><div id="strona-opis-kategorii-zawartość" class="strona-opis-kategorii-zawartość" style="min-width:{{#if:{{{tabela|}}}|auto|{{{minimalna szerokość kolumn|{{#if:{{{siostrzane}}}{{{siostrzane projekty|}}}|34.8125rem|50.375rem}}}}}}};width:auto;column-rule:solid 1px;column-count:{{{liczba kolumn|1}}};border: solid #aaa 1px;padding:0.1875rem;background:white;box-sizing:border-box;">}}{{#if:{{{grupuje|}}}|<div> {{{grupuje}}}</div>|}}{{#if:{{{uwagi|}}}|<div> {{{uwagi}}}</div>|}}{{#if:{{{liczba stron|}}}|<div> {{{liczba stron}}}</div>|}}{{#if:{{{osobne grupują|}}}|<div>{{Strong|Osobne kategorie grupują}} {{{osobne grupują}}}</div> |}}{{#if:{{{główne strony|}}}|<div>{{Strong|Główne strony:}} {{{główne strony}}}</div> |}}{{#if:{{{portal|}}}|<div>{{Strong|Portal:}} {{#ifexist:Portal:{{{portal}}} |{{lo|{{{portal}}}|miano przestrzeni nazw=Portal}} |{{#if:{{#invoke:Wikidane|id|Portal:{{{portal}}}|idwiki=plwiki}} |{{lpt|{{{portal}}}}} |{{{portal}}} }} }}</div> }}{{#if:{{{wikiprojekt|}}}|<div>{{Strong|Wikiprojekt:}} {{#ifexist:Wikiprojekt:{{{wikiprojekt}}} |{{lo|{{{wikiprojekt}}}|miano przestrzeni nazw=Wikiprojekt}} |{{#if:{{#invoke:Wikidane|id|Wikiprojekt:{{{wikiprojekt}}}|idwiki=plwiki}} |{{lpw|{{{wikiprojekt}}}}} |{{{wikiprojekt}}} }} }}</div> }}{{#if:{{{zobacz|}}}|<div>{{Strong|Zobacz też:}} {{{zobacz}}}</div> |}}{{#if:{{{szablony|}}}|<div>{{Strong|Związane szablony:}} {{{szablony}}}</div> |}}{{#if:{{{zgłaszające|}}}|<div>{{Strong|Szablony zgłaszające:}} {{{zgłaszające}}}</div> |}}{{#if:{{{linkujące|}}}|<div>{{Strong|Linkujące do strony:}} {{{linkujące}}}</div> |}}{{#if:{{{związane|}}}|<div>{{Strong|Powiązane kategorie:}} {{{związane}}}</div> |}}{{#if:{{{zobacz opisy|}}}|<div>{{Strong|Zobacz też opisy:}} {{{zobacz opisy}}}</div> |}}{{#if:{{{dokumentacje|}}}|<div>{{Strong|Powiązane dokumentacje:}} {{{dokumentacje}}}</div> |}}{{#if:{{{opis stron|}}}|<div>{{Strong|Opis stron:}} {{{opis stron}}}</div> |}}{{#if:{{{przykłady|}}}|<div> {{{przykłady}}}</div> |}}{{#if:{{{dalsze pozycje|}}}|<div> {{{dalsze pozycje}}}</div> |}}{{#if:{{{zmiany|}}}|<div> {{{zmiany}}}</div> |}}<!-- -->{{#if:{{{bez kolumn|}}}||</div></div>}}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon pomocniczy - silnik, szablonu {{s|Opis kategorii}}. Zobacz też: {{s|Opis kategorii/start}}.}}{{Kategoria|Szablony - silniki}}</noinclude> 0rwgnizilgvme3fk9bm2g5oqepdne0d Moduł:StronicowyParser/Potrzebne 828 58155 556541 553835 2026-09-15T09:58:56Z Persino 2851 556541 Scribunto text/plain local p={}; function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num) local numer_parametru; if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tab_spisu_rzeczy; if(not kod_num)then tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu; else tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy; end; numer_parametru=tab_spisu_rzeczy[nazwa_szablonu]; if(not numer_parametru)then return nil;end; tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru; else numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru; end; local indeks=numer_parametru[numer]; for p,_ in ipairs(indeks) do local parametr=tabela_parametrow_szablonu[indeks[p]]; if(parametr)then return parametr; end; end; return nil; end; function p.LiczonyHNumer() local tab={}; local h_numer_zapamietane=nil; --local ostatnie_poprz=nil; return function(h_numer,h_numer_nowe) if(h_numer==0)then if(#tab>0)then local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]); return ostatnie_poprz; end; return nil; elseif(h_numer<0)then h_numer=math.abs(h_numer); end; local ostatnie;---=tab[h_numer]; local max_h_numer=nil;local min_h_numer=nil; local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true; for i=#tab,1,-1 do ---- local h_numer_pos,ostatnie_pos=unpack(tab[i]); if(ostatnie_ost_prawda)then if(h_numer_pos==h_numer)then ostatnie_ost=ostatnie_pos; break; end; ostatnie_ost_prawda=nil; end; ---- if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then if((h_numer_pos or 0)<=(max_h_numer or h_numer))then ostatnie_max=ostatnie_pos; max_h_numer=h_numer_pos; end; end; end; if(ostatnie_ost)then ostatnie=ostatnie_ost; else ostatnie=(ostatnie_max or 0)+1; end; local h_numer_poprz,ostatnie_poprz=nil,nil; if(#tab>0)then h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]); end; if(ostatnie>(ostatnie_poprz or 0)+1)then ostatnie=(ostatnie_poprz or 0)+1; end; table.insert(tab,{h_numer,ostatnie,}); if(h_numer_nowe)then local roznica=h_numer_nowe-ostatnie; if(roznica==0)then return ostatnie; end; local tab2={}; for i,tabs in pairs(tab)do local name,value=unpack(tabs); tab2[i]={name,value+roznica,}; end; tab=tab2; return h_numer_nowe; end; return ostatnie; end; end; function p.PoziomAdresu(adres) local lens=#adres; local i=1; for p=1, lens,1 do local znak=mw.ustring.sub(adres,p,p); if(znak=="/")then i=i+1; end; end; return i; end; function p.NazwaNadStrony(adres,numer) if((numer)and(numer==0))then return nil;end; if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end; local lens=#adres; local i=1; for p=1, lens,1 do local znak=mw.ustring.sub(adres,p,p); if(znak=="/")then i=i+1; end; if(i==numer)then return mw.ustring.sub(adres,1,p-1); end; end; return adres; end; function p.SubNazwaNadStrony(adres,numer,krok) if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end; krok=krok or 1; if((krok<1)or(krok~=math.floor(krok)))then return adres;end; local lens=#adres; local i=1; local a=nil;local b=nil; for p=1, lens,1 do local znak=mw.ustring.sub(adres,p,p); if(znak=="/")then i=i+1; if(i==numer)then if(not a)then a=p+1;end; end; if(i==numer+krok)then if(not b)then b=p-1;break;end; end; end; end; if(not a)then a=1;end; if(not b)then b=lens;end; return mw.ustring.sub(adres,a,b); end; function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki) local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"]; local nazwa_jednostki=self.args["nazwa jednostki"]; if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then local html_modul=require("Module:Html"); if(nazwa_jednostki)then local tabela_nazw_adresu={}; self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu); self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu); end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]()); local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]()); local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki; pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true); pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki); --- local techniczne_modul=require("Module:Techniczne"); local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu); pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,}; pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki); local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki); if(strona)then pelna_nazwa_jednostki=strona;end; local nazwy_modul=require("Module:Nazwy"); self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki); self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki); self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki); self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki); self.parametry_woluminu=false; local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni]; if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end; local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu]; if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end; local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu]; if(not tab_lista_artykulow_w_ksiazce)then return; end; local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy; if(oryginalna_ksiazka)then self.nazwa_przestrzeni=oryginalna_ksiazka[1]; self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2]; self.nazwa_woluminu=oryginalna_ksiazka[3]; end; else local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; self.parametry_woluminu=true; end; end; function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu) local self_tab; if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then if(not tabela_listy_danych_analizy_ksiazki)then self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki); end; if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw; local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki; local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki; local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu; return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule; end; end; end; if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki); end; local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)]; if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return nil,nil,nil,nil,nil; end; local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)]; if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]] end; local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)]; if(not tab_lista_artykulow_w_ksiazce)then return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil; end; local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil; return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule; end; function p.AnalizujArgumentySzablonu(self,frame) local parametry_modul=require("Module:Parametry"); self.args=parametry_modul.PobierzArgsParametry(frame,true); end; function p.Args(self) return self.args; end; function p.Self(self,tabela_listy_danych_analizy_ksiazki) local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych; local self_tab={}; self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni; self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu; self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu; self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu; self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni; self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu; self_tab.nazwa_woluminu_podana=self.nazwa_woluminu; self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu; return self_tab,tabela_listy_danych_analizy_ksiazki; end; function p.KompletnaNazwaWoluminu(self,frame) return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu end; function p.NazwaPodStronyWoluminu(self,frame) return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or ""); end; function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana) local stronicowyparser_modul=require("Module:StronicowyParser"); local nazwy_modul=require("Module:Nazwy"); local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie; local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil; local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul; return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~="")) and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul) or artykul; end; function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki) p:AnalizujArgumentySzablonu(frame); p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki); local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki); if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end; local tab_naglowkow={}; for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do local rozdzial=tab_lista[1][1]; local poziom_rozdzialu=tab_lista[1][2][1]; local czy_centrowany=tab_lista[1][2][4]; if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then table.insert(tab_naglowkow,rozdzial); end; end; self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow; return tab_naglowkow; end; function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki) self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1; self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki); if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end; self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu); self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2); local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2]; return artykul; end; function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki) self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1; self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki); if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end; self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu); self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu); local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1]; return artykul; end; function p.PierwszyNapisWprowadzeniaTekstu(self,frame) self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki); return self.tablica_napisowa_wprowadzenia_tekstu[1]; end; function p.OstatniNapisWprowadzeniaTekstu(self,frame) self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki); return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)]; end; function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame) self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki); self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu); return self.len_pomiedzy_napisu_wprowadzenia_tekstu; end; function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame) local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame); local parametry_modul=require("Module:Parametry"); return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow); end; function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly) p:AnalizujArgumentySzablonu(frame); local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule; if(not tab_lista_artykulow_w_ksiazce_spis)then p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki); tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki); spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu; inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy; dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu; end; if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end; local args=p:Args(); local parametry_modul=require("Module:Parametry"); local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]); local tab_artykulow=(not czy_naglowek) and {} or nil; local tab_listy_artykulow={}; local tab_listy_artykulow_spis={}; local czy_inne_spisy=false; local html_modul=require("Module:Html"); local nazwa_tabeli_danego_spisu_tresci=args["spis"]; if(nazwa_tabeli_danego_spisu_tresci)then local techniczne_modul=require("Module:Techniczne"); nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true); nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci); nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",}; nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,""); local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame) local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci; local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu); if(strona)then local nazwy_modul=require("Module:Nazwy"); nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona); end; end; local czy_dany_spis=nil; for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do local poziom_rozdzialu=tab_lista[1][2][1]; local nazwa_spisu=nil; if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then local spis=tab_lista[1]["spis"]; nazwa_spisu=spis and spis[1] or nil; ---- if(not nazwa_tabeli_danego_spisu_tresci)then if(nazwa_spisu)then if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end; local spis_artykulow=tab_listy_artykulow["spis"]; spis_artykulow[nazwa_spisu]={}; tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu]; czy_inne_spisy=true; else local dodatkowe=tab_lista[1]["dodatkowe"]; if(dodatkowe)then tab_listy_artykulow["dodatkowe"]={}; tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"]; czy_inne_spisy=true; end; end; else if(nazwa_spisu)then if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then czy_dany_spis=true; else if(czy_dany_spis)then czy_dany_spis=nil; break; else czy_dany_spis=nil; end; end; end; end; end; if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then local pomin_pozycje=true; for _,artykul_w_bazie in ipairs(tab_lista[2])do if((not pomin_pozycje)or(not nazwa_spisu))then local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]); local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1]; ---- artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek); ---- if(czy_naglowek or (not tab_artykulow[artykul]))then if(not czy_naglowek)then tab_artykulow[artykul]=true;end; local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil; local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil; local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil; table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul); end; else pomin_pozycje=false; end; end; end; end; local stronicowyparser_modul=require("Module:StronicowyParser"); local parametry_modul=require("Module:Parametry"); --local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly; if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy) or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy))) and((not dodatkowe_artykuly) or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly))) ))then local tablica_spisu_glownego; if(not nazwa_tabeli_danego_spisu_tresci)then if(czy_inne_spisy)then local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci); local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {}; tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci]; else tablica_spisu_glownego=tab_listy_artykulow_spis; end; else tablica_spisu_glownego=tab_listy_artykulow_spis; end; local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego); return function() local wartosc=iter_glowny(); if(not wartosc)then return nil;end; local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc); local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil); local nazwa=czy_table_wartosc and wartosc[2] or nil; local przekierowanie=czy_table_wartosc and wartosc[3] or nil; local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil; return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki; end; end; local wykorzystane_spisy={}; local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {}); local czy_dodatkowe_zaanalizowane=false; local function IteratorMain(wartosc,numer) ---- local tabela_spisu_spis=tab_listy_artykulow["spis"] or {}; local tabela_spisu=tabela_spisu_spis[wartosc]; if(tabela_spisu)then if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then tabela_spisu=nil; else wykorzystane_spisy[wartosc]=true; end; end; local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {}); ---- local tak=nil; local iter2=nil; local function Iterator() local function IterMain() local wartosc=iter(); local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki; if(not wartosc)then if(numer~=0)then return nil; else local function InneSpisy() --if(aa<10)then return nil;end; local spis=iter_innych_spisow(); if(not spis)then if(czy_dodatkowe_zaanalizowane)then return nil;end; local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"]; if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end; iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {}); czy_dodatkowe_zaanalizowane=true; wartosc=iter(); return true; end; local czy_table_spis=parametry_modul.TypeTable(spis); local spis_artykul=czy_table_spis and spis[1] or spis; if(not wykorzystane_spisy[spis_artykul])then wykorzystane_spisy[spis_artykul]=true; local tabela_spisu_spis=tab_listy_artykulow["spis"] or {}; local tabela_spisu=tabela_spisu_spis[spis_artykul]; if(tabela_spisu)then iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {}); wartosc=iter(); if(not wartosc)then return InneSpisy(); end; else return InneSpisy(); end; else return InneSpisy(); end; return true; end; local koniec=InneSpisy(); if(not koniec)then return nil;end; end; end; ---- local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc); artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc); nazwa=czy_table_wartosc and wartosc[2] or nil; przekierowanie=czy_table_wartosc and wartosc[3] or nil; pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil; ---- artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul); ---- tak=true; iter2=IteratorMain(artykul,numer+1); return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki; end; if(not tak)then local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain(); return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki; else local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2(); if(not artykul)then tak=nil; local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain(); return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki; else return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki; end; end; end; return Iterator; end; local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci); return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0); end; function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac) local frame=mw.getCurrentFrame(); local nazwy_modul=require("Module:Nazwy"); local techniczne_modul=require("Module:Techniczne"); local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly); for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do if(pelna_nazwa_ksiazki)then if(co_ma_wykrywac)then if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then local czy_przekierowanie=pelna_nazwa_ksiazki[6]; if(czy_przekierowanie)then local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false); if(pelna_nazwa_ksiazki[5])then if(nazwa_artykulu==przekierowanie)then local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false); return nazwa_artykulu_strony,1; end; else if((nazwa_artykulu==przekierowanie))then local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false); return nazwa_artykulu_strony,2; end; end; else local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu); local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,}; if(ile>0)then return nazwa_artykulu,3; else return nazwa_artykulu,4; end; end; end; end; else if(not co_ma_wykrywac)then local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false); if(przekierowanie)then if(nazwa_artykulu==przekierowanie)then local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false); return nazwa_artykulu_strony,1; else local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false); if(nazwa_artykulu==nazwa_artykulu_strony)then return nazwa_artykulu_strony,2; end; end; else local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false); if(nazwa_artykulu==nazwa_artykulu_strony)then return nazwa_artykulu,3; end; end; end; end; end; end; function p.ObliczeniaInformacje(self,frame) local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki); if (not iterator)then return nil;end; ---- self.tab_artykul={}; ---- for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul); end; self.len_tab_artykul=#self.tab_artykul; return true; end; function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer) if(numer==0)then return tablica,0;end; local s=0; for i=#tablica,1,-1 do local artykul=tablica[i][1]; local numer_artykulu_w_bazie=p.PoziomAdresu(artykul); if(numer~=numer_artykulu_w_bazie)then table.remove(tablica,i); s=s+1; end; end; return tablica,s; end; function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer) local tab_artykul;local s; if(numer>0)then local parametry_modul=require("Module:Parametry"); tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul); tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer); else tab_artykul=self.tab_artykul; s=0; end; local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1; local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2); local artykul=tab_artykul[reszta_pomiedzy_artykul+2]; return artykul; end; function p.LosowaStronaWoluminu(self,frame,numer) local tab_artykul;local s; if(numer>0)then local parametry_modul=require("Module:Parametry"); tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul); tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer); else tab_artykul=self.tab_artykul; s=0; end; local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1; local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul); local artykul=tab_artykul[reszta_pomiedzy_artykul+1]; return artykul; end; function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow)) or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow)) )then return nil,false; end; local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true); if(not czy_powodzenie)then return nil,false; end; nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu; return nazwa_szablonu,true; end; nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; return nazwa_szablonu; end; function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow) if(lista_elementow_spisu_tresci==nil)then return nil;end; local twor_listy=""; local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2]; local poziom=1; local num={}; local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or ""; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}"); local adres=element_w_tablicy[1][1]; local naglowek=element_w_tablicy[1][2]; local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil); if(czy_w_tym_szablony)then local specjalne_modul=require("Module:Specjalne"); adres=specjalne_modul["PrzetwórzNagłówek"](adres,true); naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false); end; adres=nazwa_strony_z_naglowkami.."#"..adres; ---- if(licznik==1)then num[#num+1]=1; twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]"; else if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then num[#num]=num[#num]+1; twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]"; elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then num[#num+1]=1; poziom=poziom+1; twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]"; liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2]; elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then local num_length=#num; for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do table.remove(num); end; num[#num]=num[#num]+1; local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2]; poziom=poziom-roznica_poziomow; twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">' .."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]"; liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2]; end; end; end; twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0); return twor_listy; end; function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij) local frame=frame or mw.getCurrentFrame(); local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); local bez_przypisow=PobierzParametr("bez przypisów"); bez_przypisow=parametry_modul.CzyTak(bez_przypisow); local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow); local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka); if(not toc_czy_tocramka)then local czy_ukryte=twor_listy; local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu"; local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem"; local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%"; local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści"; local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x); local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu); local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego); local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki); local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami); local maxwidth=PobierzParametr("max-width"); local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil; local klasa=PobierzParametr("klasa"); --twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>"; local klasa_tytulu='tytuł_spisu_treści'; local styl_tytulu='text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;'; local styl_spisu=(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;'; local klasa_spisu='toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or ""); local spis=czy_ukryte or "<ul></ul>"; local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}'; local rozwiniety_wikikod=frame:preprocess(wikikod_menu); return rozwiniety_wikikod; else return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or ""); end; end; function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2) if(obiekt~="SZABLON")then return;end; --uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+",""); --local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu]; ---- local szablonowe_modul=require("Module:Szablonowe"); ---- local function GlownaFunkcja(wywolanie,obiekt,kod) local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) __Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer); if(__Funkcja2)then __Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu); end; end); end; GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod); end; function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek) local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then if(not czy_naglowek)then return artykul[1]; else return artykul; end; end; return artykul; end; function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul) local parametry_modul=require("Module:Parametry"); local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul); if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end; return czy_table_baza_artykulu; end; function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link) local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end; return tab_artykulu; end; function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu) local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end; return tab_artykulu; end; function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony) local parametry_modul=require("Module:Parametry"); parametry=parametry_modul.CzyTak(parametry) and parametry or nil; naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil; return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony; end; function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link) local parametry_modul=require("Module:Parametry"); if(parametry_modul.TypeTable(tab_artykul))then if(pomin_link or tab_artykul["LINK"])then local nazwa_artykulu_strony=tab_artykul[1]; if(naglowek)then local parametry=tab_artykul[2]; local naglowek=tab_artykul[3]; return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or ""); else return nazwa_artykulu_strony; end; else return tab_artykul; end; else return tab_artykul; end; end; function p.DekodowanieTekstu(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) return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony) if(not tekst)then return tekst;end; local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne"); local tekst,tekst2=stronicowyparser_pomocne_modul.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) return tekst,tekst2; end; end; function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory) ---- local szablonowe_modul=require("Module:Szablonowe"); local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu()); if(not czy_kodowanie)then return nil,true;end; if(not czy_uwzgledniac_modyfikatory)then local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:"); if(czy_modyfikatory)then return nil,false;end; end; 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_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_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_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza ---- local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu; ---- local techniczne_modul=require("Module:Techniczne"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local czy_szablon_wszystko=false; local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(obiekt=="SZABLON")then local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((tab_szablony[nazwa_szablonu]) ---or(tab_naglowki[nazwa_szablonu]) --or(tab_tekst[nazwa_szablonu] or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu]) or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu]) or(tab_szablony_strona_zbiorcza[nazwa_szablonu]) or(tab_szablony_strona_start[nazwa_szablonu]) )then return nil,false;end; for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua) or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/")) )then return nil,false; end; end; return true,true; end); czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik); return wynik; end; return true; end); if(czy_szablon_wszystko)then local frame=mw.getCurrentFrame(); nazwa_szablonu=frame:preprocess(nazwa_szablonu); end; return nazwa_szablonu,true; end; function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja; if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end; local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu]; if(nazwa_linku)then return nazwa_linku,true;end; local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja; local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$"); if((link)and(link=="L"))then if((ustep=="")or(ustep=="u"))then prze=litery_przestrzeni_kolidacja[prze] or prze; local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze]; if(przez_literowa)then local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa; return nazwa,true; end; if(ustep=="")then if(prze=="u")then return "LinkUstęp"..dwa,true;end; if(prze=="o")then return "LinkOgólne"..dwa,true;end; end; else local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze]; if(projektowe_literowe)then ustep=litery_przestrzeni_kolidacja[ustep] or ustep; local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep]; if(prze_literowa)then return "Link"..projektowe_literowe..prze_literowa..dwa,true; end; end; end; return nazwa_szablonu,false; else local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$"); if((link)and(link=="L"))then if((ustep=="")or(ustep=="u"))then local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt]; if(projektowe_literowe)then prze=litery_przestrzeni_kolidacja[prze] or prze; local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze]; if(prze_literowa)then return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true; end; end; end; end; return nazwa_szablonu,false; end; end; function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0]; 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.tablica_analizy_linku; end; end; end; nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa; local function AnalizaSzablonowaLinku() local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$"); if(not nazwa)then return;end; if(dwa=="")then dwa=nil;else dwa=true;end; local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ---- local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne; local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu; local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe; ---- local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$") nazwa=nazwa_nowa or nazwa; local czy_ustep=ustep_nowa and true or false; local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$"); if(przestrzen)then local przestrzenne=tab_przestrzen[przestrzen]; if(przestrzenne)then return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,}; end; end; ---- local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$"); if(jezyk and przestrzen)then local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen]; if(jezykowe and przestrzenne)then return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,}; end; ---- local projektowe=tab_projektowe[jezyk]; if(projektowe and przestrzenne)then return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,}; end; end; ----- local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$"); if(jezyk and projekt and przestrzen)then local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen] if(jezykowe and projektowe and przestrzenne)then return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,} end; local projektowe=tab_projektowe[jezyk..projekt]; if(projektowe and przestrzenne)then return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,}; end; end; return nil; end; local wynik=AnalizaSzablonowaLinku(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0]; 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.tablica_analizy_linku=wynik; end; return wynik; end; function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,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[-7]; 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 stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); --local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne; local nazwa_zamiast_linku; nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu); if(nazwa_szablonu=="Sekcja referencyjna")then local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2]; if(nazwa)then return nazwa;end; local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1]; local parametry_modul=require("Module:Parametry"); local czy_strona=parametry_modul.CzyTak(strona) and true or false; if(not czy_strona)then local nazwy_modul=require("Module:Nazwy"); strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](); end; local ustep=tabela_parametrow_szablonu["ustęp"]; local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna"); local czy_ustep=parametry_modul.CzyTak(ustep); if(not czy_strona)then czy_ustep=not czy_ustep;end; nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep); elseif(nazwa_szablonu=="Link wewnętrzny")then nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "") elseif(nazwa_szablonu=="LinkOgólne")then nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1]; elseif(nazwa_szablonu=="SpisTreści")then local nazwa=(tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["artykuł"] or tabela_parametrow_szablonu[1]); if(nazwa)then local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4]; if(dodatek)then dodatek=" "..dodatek;else dodatek="";end; nazwa_zamiast_linku=nazwa..dodatek; end; elseif(nazwa_szablonu=="LinkURL")then local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"]; if(nazwa)then nazwa_zamiast_linku=nazwa; else local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"]; nazwa_zamiast_linku=strona; end; end; if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7]; 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=nazwa_zamiast_linku; end; end; return nazwa_zamiast_linku; end; function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,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[-8]; 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; nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy; local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tab_spis)then local czy_true=tab_spis[1]; local parametr;local numer; if(czy_true)then parametr=tabela_parametrow_szablonu[tab_spis.numer_link]; else parametr=tabela_parametrow_szablonu[tab_spis.link]; local numer=tabela_parametrow_szablonu[tab_spis.numer]; parametr=(parametr and numer)and (numer.." "..parametr) or (parametr); end; if((parametr)and(parametr~=""))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8]; 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=parametr; end; end; return parametr; end; return nil; end; function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych) local numer; if((obiekt)and(kod))then if(obiekt=="SZABLON")then numer=-2; elseif(obiekt=="LINKW")then numer=-3; elseif(obiekt=="LINKZ")then numer=-4; end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer]; 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[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5]; end; end; end; end; local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if((obiekt)and(kod))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,}; end; end; return local1,local2,local3,local4,local5; end; function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych) ---- local DekodowanieTekstu=p.DekodowanieTekstu(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); ---- local parametry_modul=require("Module:Parametry"); local wiki_modul=require("Module:Wiki"); local pozycja_artykulu=nil;local nazwa=nil; local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci); if(not czy_tabela_do_parsowania_artykulu)then pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$"); if(not((pozycja_artykulu)and(nazwa)))then pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$"); end; end; local html_modul=require("Module:Html"); local nazwy_modul=require("Module:Nazwy") local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci); local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]]) ---- --local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true); --local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true); ---- strona=html_modul["NazwaStronyAdresu"](strona,true); strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",}; local techniczne_modul=require("Module:Techniczne"); strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,}; ---- local tabela_nazw_strona={}; local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona); local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona); local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona); local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona); --if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and --[[else]] if(tab_nazwa_spisow_przekierowaniowych)then local techniczne_modul=require("Module:Techniczne"); local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona); local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie) local tabela_nazw_przekierowanie={}; ---- local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie); local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie); local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie); local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony)); ---- local tabela_nazw_adresu_przekierowania={}; local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil); local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil); ---- if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki)))); if(czy_inne_ksiazka)then if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={}; end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={}; end; if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true; end; end; return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,}; else if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,}; else return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony; end; end; end; if(strona_przekierowania)then return DaneRozwazone(strona_przekierowania,nil,true); else if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]) and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},}; end; local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,""); local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki); if(strona_przekierowania)then return DaneRozwazone(strona_przekierowania,true,false); end; end; end; if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then return {nazwa_artykulu_strony,parametry,naglowek,}; end return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony; end; --- local pudelko_modul=require("Module:Pudełko"); local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"](); local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"](); local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then ---- pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil); parametry_ref=DekodowanieTekstu(parametry_ref,2,nil); naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil); ---- local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:"); local tabela_nazw_adresu_artykulu={}; parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu); naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu); pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu); ---- local czy_pozycja_artykulu=pozycja_artykulu; local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref); if(pozycja_artykulu)then return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; else local nazwy_modul=require("Module:Nazwy"); --local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,}; strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwa_przestrzeni_strony==nazwy_np_modul.Main) or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior) or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks) or(nazwa_przestrzeni_strony==nazwy_np_modul.User) )then return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; elseif( czy_link or parametry_modul.CzyTak(klucz_projektu) or parametry_modul.CzyTak(kod_jezyka) or parametry_modul.CzyTak(kod_projektu) or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File)) )then return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; end; else local pozycja_artykulu_stara=pozycja_artykulu; local pudelko_modul=require("Module:Pudełko"); local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"](); local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"](); local wiki_modul=require("Module:Wiki"); local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu); pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil); local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:"); local nazwa_strony_linku; local uzyskana_nazwa_strony_linku; if(czy_nie_dwukropek)then nazwa_strony_linku=pozycja_artykulu; else local kod_jezyka_poczatkowy, kod_projektu_poczatkowy; nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy); uzyskana_nazwa_strony_linku=nazwa_strony_linku; end; ---- parametry_ref=DekodowanieTekstu(parametry_ref,2,nil); naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil); ---- local html_modul=require("Module:Html"); local tabela_nazw_adresu={}; local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu); local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu); nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu); local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw_artykul={}; local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul); local nazwa_kanoniczna_przestrzeni; local biezaca_wiki; if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,}; else biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki; end; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(biezaca_wiki)then local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false; if(nazwa_przestrzeni)then if((nazwa_przestrzeni==nazwy_np_modul.Main) or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior) or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks) or(nazwa_przestrzeni==nazwy_np_modul.User) )then local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku); if(pozycja_artykulu)then return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; else nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony); return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; elseif( czy_link or (nazwa_strony_linku~=pozycja_artykulu) or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File)) )then nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul) return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; else return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; else nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul); nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}; if(nazwa_kanoniczna_przestrzeni)then if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main) or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior) or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project) or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User) )then return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; else return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; else return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; end; return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; else return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; end; --- local czy_pozycja_artykulu=nil; if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$"); if(link_szablon)then local szablonowe_modul=require("Module:Szablonowe"); return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu); if(nazwa_szablonu=="SpisTreści")then local tabela_nazw_spis_rzeczy={}; pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy); if(not pozycja_artykulu)then return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; ------ local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy); if(not nazwa_ksiazki)then pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil); local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy); local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy); if((nazwa)or(dodatek))then local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or ""); ------ return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; else return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; else local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or ""); adres=p.DekodowanieNazwySzablonu(adres,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres; local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy); local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy); if((nazwa)or(dodatek))then nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or ""); end; local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres); return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); end; elseif(nazwa_szablonu=="Sekcja referencyjna")then local tabela_nazw_sekcja_referencyjna={}; local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true); local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true); ----- local strona_wolumin; local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true); if(strona)then strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil); end; podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona; ---- local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true); local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true); local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true); ---- local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true); local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true); ---- local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna"); ---- if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then ---- local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin); ---- local html_modul=require("Module:Html"); local tabela_nazw_adresu={}; local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu); local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu); ---- local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu); ----- return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil); else local pudelko_modul=require("Module:Pudełko"); local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"]( { args={ ["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw, ["nazwa jednostki"]=nazwa_jednostki, } },0); local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin); local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu); return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil); end; elseif(nazwa_szablonu=="Link wewnętrzny")then local pozycja_artykulu=tabela_parametrow_szablonu["strona"]; if(not pozycja_artykulu)then return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; local nazwa=tabela_parametrow_szablonu["nazwa"]; local naglowek=tabela_parametrow_szablonu["nagłówek"]; local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"]; local kod_jezyka=tabela_parametrow_szablonu['kod języka']; local kod_projektu=tabela_parametrow_szablonu["kod projektu"]; local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu); return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) else local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$"); if(nazwa_szablonu_nowa)then local pozycja_artykul; local strona=tabela_parametrow_szablonu[1]; if(not strona)then return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; local czy_dwa=(dwa~="")and true or false; local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil; local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"]; local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"]; local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"]; local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"] or tabela_parametrow_szablonu["przestrzeń"] or tabela_parametrow_szablonu["f"]; if(miano_przestrzeni_nazw)then pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona; else pozycja_artykulu=strona; end; local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu); return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) else local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true); if(dane_szablonu_linku)then local pozycja_artykulu=tabela_parametrow_szablonu[1]; if(not pozycja_artykulu)then return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false; end; local nazwa_przestrzeni=dane_szablonu_linku[1]; local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1]; local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil; local klucz_projektu;local kod_jezyka;local kod_projektu; if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"]; kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"]; kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"]; else kod_jezyka=dane_szablonu_linku[3]; kod_projektu=dane_szablonu_linku[2]; end; local czy_nie_dwukropek; if(nazwa_przestrzeni=="")then czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu); elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then czy_nie_dwukropek=true; else czy_nie_dwukropek=false; end; return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow); elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true; end; end; end; end); else local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$"); if(nazwa_strony)then nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true); return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false; else local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$"); if((nazwa_strony)and(nazwa_linku))then nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true); return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false; end; end; end; elseif(not czy_tabela_do_parsowania_artykulu)then local specjalne_modul=require("Module:Specjalne"); if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then return nil,nil,false,nil,true; end; local parametry_modul=require("Module:Parametry"); --pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",}); local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$"); if(czy_pozycja_artykulu)then if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu; return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil); else pozycja_artykulu=nil; return {pozycja_artykulu,nazwa},1,false,nil,false; end; else local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu); return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil); end; else local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1]; local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2]; local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu); return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil); end; end; return p; jgpldgavvcl1l03hh9qjyrxufw39cbj Wikipedysta:Persino/Gadget-Vector-2022.css/main.css 2 58973 556529 556229 2026-09-15T08:38:49Z Persino 2851 556529 css text/css /* Kod CSS skórki vector-2022 na WIKI (ustawienia własne vector) */ body:not(.action-edit):not(.action-submit) #mw-content-text .mw-parser-output, body.action-submit #wikiPreview, .mw-footer-container{ word-wrap: break-word; /*word-break: break-word;*/ } .mw-content-container, .vector-sticky-header, .vector-page-toolbar-container{ max-width: unset !important; } .mw-header{ padding-top:4px; padding-bottom:4px; } .vector-header-container{ box-sizing:border-box; width: -moz-available !important; width: -webkit-fill-available !important; width: stretch !important; } html.vector-feature-page-tools-pinned-enabled > body.ns-special .vector-page-toolbar-container{ margin-top:-2px; } .vector-pinnable-element{ padding-top:3px; } .vector-dropdown .vector-dropdown-content{ padding-top: 6px; margin-top: 7px; } .vector-header-container{ padding-left:20px; padding-right:20px; max-width:none; border-bottom: 1px solid #eaecf0; margin-bottom:4px; max-width:100%; min-width:auto; box-sizing:border-box; } .vector-pinned-container{ margin-bottom:0; padding-right:2px !important; padding-top:2px; } #vector-page-tools-pinned-container.vector-pinned-container{ margin-bottom:0; padding-right:8px !important; } .mw-logo{ min-width:auto; } @media screen and (max-width: 999px){ .mw-header.vector-header-search-toggled .vector-search-box{ margin-left:0; } .cdx-typeahead-search--show-thumbnail.cdx-typeahead-search--auto-expand-width:not(.cdx-typeahead-search--expanded){ margin-left:0; } } @media screen and (max-width: 390px){ .mw-logo{ display:none; } } @media screen and (max-width: 454px){ .cdx-text-input__input{ min-width:auto; } } @media screen and (min-width: 999px) { .client-js.vector-sticky-header-enabled{ scroll-padding-top: 50px; } } .mw-page-container{ max-width:100vw; width:100%; box-sizing:border-box; display:flex; flex-direction:row; min-height:calc( 100% - 3.125rem - 1px - 4px - 8px ); box-sizing:border-box; background-image: url("//upload.wikimedia.org/wikipedia/commons/thumb/0/05/Wikibooksfirehazard2.svg/200px-Wikibooksfirehazard2.svg.png"); background-color:transparent; background-attachment:fixed; margin-left:0; margin-right:0; } .vector-feature-limited-width-clientpref-0 .mw-page-container{ background-color:white; } .vector-feature-limited-width-clientpref-1 .mw-page-container{ background-color:cornflowerblue; } @media all and (max-width:999px){ .mw-page-container{ background-image:none; } } html.vector-feature-limited-width-clientpref-0 > body > .mw-page-container, html.vector-is-page-available > body > .mw-page-container{ background-image:none; } @media all and (max-width:476px){ .mw-page-container{ min-height:calc( 100% - 6.75rem - 1px - 4px - 8px ); width:100% !important; } } @media all and (max-width:999px){ .mw-page-container{ width:100% !important; } } .mw-page-container > .mw-page-container-inner{ background-color:white; padding-left: 5px; padding-right: 5px; } .mw-page-container > .mw-page-container-inner{ max-width:100vw; margin:auto; margin-top:0; } .vector-main-menu-container, .mw-content-container{ margin-top:2px; } @media all and (min-width:999px){ .mw-page-container > .mw-page-container-inner{ padding-left:5px; padding-right:5px; max-width:100%; } .mw-page-container > .mw-page-container-inner{ width:auto; } .vector-feature-limited-width-clientpref-0 #content{ width:100%; } .mw-page-container .mw-content-container{ display:flex; flex-direction:column; } .mw-page-container .mw-content-container > #content{ height:auto; order:1; } .mw-page-container .mw-content-container > #mw-data-after-content{ order:2; } html.client-nojs #bodyContent{ width:auto !important; } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .mw-body-header, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .mw-body-header{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem ); } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .mw-body-header{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .mw-body-header, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .mw-body-header{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem ); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .mw-body-header{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .mw-body-header, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .mw-body-header{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .mw-body-header{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-page-toolbar, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-page-toolbar{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem ); } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-page-toolbar{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-page-toolbar, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-page-toolbar{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem ); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-page-toolbar{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-page-toolbar, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-page-toolbar{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-page-toolbar{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #bodyContent, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #bodyContent, html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #bodyContent, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #bodyContent{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #bodyContent, html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #bodyContent{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #bodyContent, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #bodyContent{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #bodyContent{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 15rem + 5px ); } /**/ /**/ html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem ); } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem ); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #footer{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 15rem + 5px ); } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container, html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 15rem + 5px ); } /**/ html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem ); } html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem ); } html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container, html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{ width:calc(50rem + 2 * 0.625rem + 2px ); } html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{ width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem ); } /**/ .mw-footer-container{ display: flex; flex-direction: row; align-items: stretch; justify-content: center; } } body, .mw-page-container, .mw-page-container-inner, .mw-content-container, #content, #bodyContent, #mw-content-text, .mw-parser-output, #footer, .vector-sitenotice-container{ max-width:-moz-available !important; max-width:-webkit-fill-available !important; max-width:stretch !important; } body.ns-10:not(.ns-submit) .mw-body-header, body.ns-828:not(.ns-submit) .vector-sitenotice-container, body.vector-page-css.ns-8 .mw-body-header, body.vector-page-js.ns-8 .mw-body-header, body.vector-page-css.ns-2 .mw-body-header, body.vector-page-js.ns-2 .mw-body-header, body.ns-10:not(.ns-submit) .vector-sitenotice-container, body.ns-828:not(.ns-submit) .vector-sitenotice-container, body.vector-page-css.ns-8 .vector-sitenotice-container, body.vector-page-js.ns-8 .vector-sitenotice-container, body.vector-page-css.ns-2 .vector-sitenotice-container, body.vector-page-js.ns-2 .vector-sitenotice-container, body.ns-10:not(.ns-submit) .vector-page-toolbar, body.ns-828:not(.ns-submit) .vector-page-toolbar, body.vector-page-css.ns-8 .vector-page-toolbar, body.vector-page-js.ns-8 .vector-page-toolbar, body.vector-page-css.ns-2 .vector-page-toolbar, body.vector-page-js.ns-2 .vector-page-toolbar, body.ns-10:not(.ns-submit) #bodyContent, body.ns-828:not(.ns-submit) #bodyContent, body.vector-page-css.ns-8 #bodyContent, body.vector-page-js.ns-8 #bodyContent, body.vector-page-css.ns-2 #bodyContent, body.vector-page-js.ns-2 #bodyContent, body.ns-10:not(.ns-submit) #footer, body.ns-828:not(.ns-submit) #footer, body.vector-page-css.ns-8 #footer, body.vector-page-js.ns-8 #footer, body.vector-page-css.ns-2 #footer, body.vector-page-js.ns-2 #footer{ width:100% !important; } @media all and (min-width:745px){ body.ns-10:not(.ns-submit) .mw-page-container > .mw-page-container-inner, body.ns-828:not(.ns-submit) .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-10 .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-10 .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-828 .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-828 .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-2.vector-page-css .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-2.vector-page-css .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-8.vector-page-css .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-8.vector-page-css .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-2.vector-page-js .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-2.vector-page-js .mw-page-container > .mw-page-container-inner, body.ns-10.ns-submit.ns-submit-8.vector-page-js .mw-page-container > .mw-page-container-inner, body.ns-828.ns-submit.ns-submit-8.vector-page-js .mw-page-container > .mw-page-container-inner, body.vector-page-css.ns-8 .mw-page-container > .mw-page-container-inner, body.vector-page-js.ns-8 .mw-page-container > .mw-page-container-inner, body.vector-page-css.ns-2 .mw-page-container > .mw-page-container-inner, body.vector-page-js.ns-2 .mw-page-container > .mw-page-container-inner, body.ns-10 .mw-page-container > .mw-page-container-inner, html.client-nojs{ width:100%; order:2; } } html.vector-feature-limited-width-clientpref-0 .mw-body-header, html.vector-feature-limited-width-clientpref-0 .vector-page-toolbar, html.vector-feature-limited-width-clientpref-0 .vector-sitenotice-container, html.vector-feature-limited-width-clientpref-0 #bodyContent, html.vector-feature-limited-width-clientpref-0 #footer, html.vector-feature-limited-width-clientpref-0 .vector-page-toolbar, html.client-nojs .mw-page-container > .mw-page-container-inner .mw-body-header, html.client-nojs .mw-page-container > .mw-page-container-inner .vector-page-toolbar, html.client-nojs .mw-page-container > .mw-page-container-inner .vector-sitenotice-container, html.client-nojs .mw-page-container > .mw-page-container-inner #bodyContent, html.client-nojs .mw-page-container > .mw-page-container-inner #footer, html.client-nojs .mw-page-container > .mw-page-container-inner .vector-page-toolbar, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .mw-body-header, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .vector-page-toolbar, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .vector-sitenotice-container, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner #bodyContent, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner #footer, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .vector-page-toolbar{ width:100% !important; } html.vector-feature-limited-width-clientpref-0 .mw-page-container > .mw-page-container-inner, html.client-nojs .mw-page-container > .mw-page-container-inner, html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner{ max-width:100vw; width:100%; overflow:auto; } #bodyContent, #content{ box-sizing:border-box; } .vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-page-container-inner, .vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-page-container-inner{ grid-template-columns: minmax(0,1fr); } body{ background-color:white; } .mw-footer-container{ padding: 7px 0 2px 0; } .mw-footer-container > .mw-footer{ padding:10px 5px; } .mw-page-container{ padding-right:0; padding-left:0; box-sizing:border-box; min-width:auto; } @media all and (min-width: 1000px){ .mw-body{ grid-template: min-content min-content min-content 1fr / minmax(0,1fr) auto; grid-template-areas: 'titlebar titlebar' 'toolbar toolbar' 'content columnEnd' '.. columnEnd'; column-gap:0 !important; width:100%; box-sizing:border-box; } } .mw-page-container-inner{ grid-template-columns: 15rem minmax(0,1fr); column-gap: 5px; } html.vector-column-end .vector-appearance-landmark{ max-width:11.875rem; } html.client-nojs.vector-feature-appearance-pinned-clientpref-1:not(.vector-feature-page-tools-pinned-enabled) .vector-column-end{ display:none; } html.client-js.vector-feature-appearance-pinned-clientpref-1:not(.vector-feature-page-tools-pinned-enabled) .vector-column-end{ width:8.125rem !important; } html.client-js.vector-feature-page-tools-pinned-enabled.vector-feature-appearance-pinned-clientpref-0 .vector-column-end{ width:11.875rem; } html.client-nojs.vector-feature-page-tools-pinned-enabled .vector-column-end, html.client-js.vector-feature-appearance-pinned-clientpref-1.vector-feature-page-tools-pinned-enabled .vector-column-end{ width:11.875rem; } .vector-sticky-pinned-container{ padding-bottom:5px; } .vector-sticky-pinned-container::after{ display:none; } .vector-sticky-pinned-container{ top:0; } .client-js.vector-sticky-header-enabled body:not(.vector-sticky-header-visible) .vector-sticky-pinned-container{ top: 0 !important; max-height:calc( 100vh - 3px ); } .client-js.vector-sticky-header-enabled body.vector-sticky-header-visible .vector-sticky-pinned-container{ top: 3.2rem !important; max-height: calc(100vh - 3.2rem - 5px); } .client-js.vector-sticky-header-enabled body.vector-sticky-header-visible .vector-column-start .vector-sticky-pinned-container{ top: 3.5rem !important; } #siteNotice{ margin:unset; } #centralNotice:not(:empty){ margin: 5px 0 8px 0; } #centralNotice:not(:empty) > div:first-of-type{ margin-top:5px; } #centralNotice:not(:empty) > div:last-of-type{ margin-bottom:8px; } .mw-indicators{ white-space:nowrap; font-size: 0.875rem; line-height: 1.4; } .mw-indicators .mw-parser-output{ font-size: 1.0em; line-height: 1.4; } .vector-page-titlebar-blank .mw-indicators{ display:none; } .mw-body-header{ position:relative; height:2.6rem; box-sizing:border-box; } .mw-body-header > .firstHeading:not(:hover){ height:100%; box-sizing:border-box } body .firstHeading:not(:hover) > .plainlinks, body:not(.action-view) .firstHeading:not(:hover) > .plainlinks{ display:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } body .firstHeading > .plainlinks, body:not(.action-view) .firstHeading > .plainlinks{ text-shadow:none; } .mw-body h1.firstHeading{ font-size: 1.6rem; line-height: 1.4; } body.action-view:not(.ns-special) .firstHeading{ min-height:100%; box-sizing:border-box; overflow:hidden; } body.action-view:not(.ns-special) .firstHeading:not(:hover){ height:100%; } body.action-view:not(.ns-special) .firstHeading:not(:hover){ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; border-bottom:0; padding-top:6px; margin-right:7px; } body:not(.ns-0).action-view:not(.ns-special) .mw-body-header:not(.vector-page-titlebar-blank) .firstHeading:not(:hover){ display:block !important; } body:not(.ns-0).action-view:not(.ns-special) .mw-body-header.vector-page-titlebar-blank .firstHeading:not(:hover){ display:none !important; } html.vector-feature-limited-width-content-enabled body.ns-0.action-view:not(.ns-special) .firstHeading:not(:hover){ display:flex; flex-direction:row; justify-content:flex-start; } body:not(.action-view) .firstHeading:not(:hover), body.action-view.ns-special .firstHeading:not(:hover), html.vector-feature-limited-width-content-disabled body.action-view .firstHeading:not(:hover){ display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; border-bottom:0; padding-top:6px; } body:not(.action-view) firstHeading:first-child:not(:hover), body.action-view.ns-special firstHeading:first-child:not(:hover), html.vector-feature-limited-width-content-disabled body.action-view .firstHeading:first-child:not(:hover){ margin-left:0; } html.vector-feature-toc-pinned-clientpref-0 body:not(.action-view) .firstHeading:not(:first-child):not(:hover), html.vector-feature-toc-pinned-clientpref-0 body.action-view.ns-special .firstHeading:not(:first-child):not(:hover), html.vector-feature-toc-pinned-clientpref-0 body.action-view .firstHeading:not(:first-child):not(:hover){ margin-left:5px; } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available body:not(.action-view) .firstHeading:not(:first-child):not(:hover), html.vector-feature-toc-pinned-clientpref-1.vector-toc-available body.action-view.ns-special .firstHeading:not(:first-child):not(:hover), html.vector-feature-toc-pinned-clientpref-1.vector-toc-available body.action-view .firstHeading:not(:first-child):not(:hover){ margin-left:0; } body.ns-0 .firstHeading:not(:hover) > div:not(.plainlinks):first-of-type, body.ns-0:not(.action-view) .firstHeading:not(:hover) > div:not(.plainlinks):first-of-type{ order:4; } body.ns-0 .firstHeading:not(:hover) > #firstHeadingTitle, body.ns-0:not(.action-view) .firstHeading:not(:hover) > #firstHeadingTitle{ order:5; } body.ns-0 .firstHeading:not(:hover) > .mw-page-title-main, body.ns-0:not(.action-view) .firstHeading:not(:hover) > .mw-page-title-main{ order:3; } body.ns-0 .firstHeading:not(:hover) > #mw-article-numbering, body.ns-0:not(.action-view) .firstHeading:not(:hover) > #mw-article-numbering{ order:1; } body.ns-0 .firstHeading:not(:hover) > *[lang], body.ns-0:not(.action-view) .firstHeading:not(:hover) > *[lang]{ order:2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } body.ns-0 .firstHeading > .mw-editsection{ height:1.2em; line-height:3.8; } body.ns-0 .firstHeading:not(:hover) > .mw-editsection{ order:4; } body .firstHeading:hover{ display:block; border:1px solid #eaecf0; border-radius:10px; background-color:white; position:absolute; top:0; /*left:-6px;*/ width:auto; padding:5px; z-index:2; } .firstHeading:first-child:hover{ left:-6px; } html.vector-feature-toc-pinned-clientpref-0 .firstHeading:not(:first-child):hover{ left:1.4375rem; } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available .firstHeading:not(:first-child):hover{ left:-6px; } header.mw-body-header{ justify-content:space-between; width:100%; box-sizing:border-box; } #vector-main-menu > div.vector-pinnable-header{ margin-left:5px; } body .firstHeading:hover{ word-wrap:break-word; hyphens:auto; width:auto; } html.vector-feature-limited-width-content-enabled body.ns-0.action-view .firstHeading:hover{ display:grid !important; justify-content:start; grid-template-columns:auto auto auto auto minmax(auto,1fr); } body.ns-0.action-view .firstHeading:hover > #mw-article-numbering:first-child{ grid-row-start:1; grid-row-end:2; grid-column-start:1; grid-column-end:2; width:auto; } body.ns-0.action-view .firstHeading:hover > :not(#mw-article-numbering):first-child, body.ns-0.action-view .firstHeading:hover > #mw-article-numbering:first-child + *{ grid-row-start:1; grid-row-end:2; grid-column-start:3; grid-column-end:4; width:auto; } body.ns-0.action-view .firstHeading:hover > .mw-page-title-main{ grid-row-start:1; grid-row-end:2; grid-column-start:2; grid-column-end:3; width:auto; } body.ns-0.action-view .firstHeading:hover > .mw-editsection{ grid-row-start:1; grid-row-end:2; grid-column-start:4; grid-column-end:5; width:auto; } body.ns-0.action-view .firstHeading:hover > .plainlinks{ grid-row-start:auto; grid-row-end:auto; grid-column-start:1; grid-column-end:6; width:auto; } body.action-view .firstHeading:hover{ display:block !important; } .mw-body-header > .mw-indicators{ order:3; margin-top:auto; margin-bottom:3px; } .mw-body-header::before{ content:''; display:block; order:3; width:auto; flex:auto 1 1; } .mw-body-header > .vector-toc-landmark{ width:1.5rem; height:2.125rem; } .mw-body-header > .vector-toc-landmark{ order:1; } html.vector-feature-toc-pinned-clientpref-0 .vector-toc-landmark{ margin-right:0; } .mw-body-header > .vector-toc-landmark ~ #firstHeading:not(:hover){ order:2; } .mw-body-header > .vector-toc-landmark ~ #firstHeading:not(:hover) ~ #ca-addsection{ order:3; } .mw-body-header > .vector-toc-landmark ~ #firstHeading:not(:hover) ~ #p-lang-btn{ order:4; } .mw-body-header > .vector-toc-landmark ~ #firstHeading:hover ~ #p-lang-btn{ order:3; } /**/ .mw-body-header > #firstHeading:first-child:not(:hover){ order:2; } .mw-body-header > #firstHeading:first-child:not(:hover) ~ #ca-addsection{ order:3; } .mw-body-header > #firstHeading:first-child:not(:hover) ~ #p-lang-btn{ order:4; } .mw-body-header > #firstHeading:first-child:hover ~ #ca-addsection{ order:3; } .mw-body-header > #firstHeading:first-child:hover ~ #p-lang-btn{ order:4; } #ca-addsection{ margin-left:0; margin-right:0; } .vector-page-titlebar{ flex-wrap:nowrap; } /**/ .vector-page-titlebar .vector-page-titlebar-toc .vector-menu-heading{ padding:0.3125em !important; } #vector-page-titlebar-toc-label{ height: 2.125rem; max-width: 28rem; min-height:unset; } .vector-toc-landmark{ margin-top:auto; margin-bottom:0; } .mw-body-header .mw-portlet-lang{ margin-right:0; } #vector-page-titlebar-toc-checkbox{ display:none; } body .firstHeading:hover > .plainlinks, body:not(.action-view) .firstHeading:hover > .plainlinks{ display:block; } #mw-panel{ border-radius: 10px; border: 1px solid #c8ccd1; padding: 5px; } /**/ #mw-panel .vector-menu-heading:not(.mw-menu-inactive), #vector-main-menu-pinned-container .vector-menu-heading:not(.mw-menu-inactive), #vector-main-menu-unpinned-container .vector-menu-heading:not(.mw-menu-inactive), #vector-page-tools-pinned-container .vector-menu-heading:not(.mw-menu-inactive), #vector-page-tools-unpinned-container .vector-menu-heading:not(.mw-menu-inactive){ background-color:whitesmoke; } #mw-panel .mw-menu-inactive, #vector-main-menu-pinned-container .mw-menu-inactive, #vector-main-menu-unpinned-container .mw-menu-inactive, #vector-page-tools-pinned-container .mw-menu-inactive, #vector-page-tools-unpinned-container .mw-menu-inactive{ background-color:lightsteelblue; color:white; } #mw-panel .vector-menu-heading, #vector-main-menu-pinned-container .vector-menu-heading, #vector-main-menu-unpinned-container .vector-menu-heading, #vector-page-tools-pinned-container .vector-menu-heading, #vector-page-tools-unpinned-container .vector-menu-heading{ padding-left:5px !important; padding-right:5px !important; margin-left:0 !important; display:block; border-radius:5px; border:1px solid #c8ccd1; margin-top:3px; margin-bottom:0; } #mw-panel .vector-menu-content:not(.mw-items-inactive), #vector-main-menu-unpinned-container .vector-menu-content:not(.mw-items-inactive), #vector-page-tools-pinned-container .vector-menu-content:not(.mw-items-inactive), #vector-page-tools-unpinned-container .vector-menu-content:not(.mw-items-inactive){ display:block; border-radius:5px; border:1px solid #c8ccd1; padding: 5px; margin-top:2px; } #mw-panel .vector-menu-content:not(.mw-items-inactive) > ul, #vector-main-menu-unpinned-container .vector-menu-content:not(.mw-items-inactive) > ul, #vector-page-tools-pinned-container .vector-menu-content:not(.mw-items-inactive) > ul, #vector-page-tools-unpinned-container .vector-menu-content:not(.mw-items-inactive) > ul{ margin-top:0; } #mw-panel .mw-items-inactive, #vector-main-menu-unpinned-container .mw-items-inactive, #vector-page-tools-pinned-container .mw-items-inactive, #vector-page-tools-unpinned-container .mw-items-inactive{ display:none; } .vector-main-menu #p-navigation .vector-menu-heading{ display:block; } #mw-panel .vector-main-menu-action, #vector-main-menu-unpinned-container .vector-main-menu-action, #vector-page-tools-pinned-container .vector-main-menu-action, #vector-page-tools-unpinned-container .vector-main-menu-action{ display:none; } #mw-panel.hidden_sidebar_panel{ position:relative; z-index:1; } #mw-panel.hidden_sidebar_panel > #hideSidebar_close_lpanel{ position:absolute; right:0; } #mw-panel.hidden_sidebar_panel > #vector-main-menu-pinned-container{ display:none; } #mw-panel #vector-main-menu-pinned-container{ padding-left:0 !important; } #vector-main-menu-pinned-container .vector-main-menu{ margin-left:0 !important; margin-top:0 !important; } #mw-data-after-content .cdx-card{ margin:5px 0; border-radius:10px; } .vector-unpinned-container .vector-menu{ margin:0 5px; } #mw-content-text .mw-parser-output code{ position:relative; } .mw-parser-output pre{ margin-top:8px; margin-bottom:8px; background-color: #f8f9fa; color: #000; border: 1px solid #eaecf0; word-wrap:break-word; word-break:break-word; hyphens:auto; box-sizing:border-box; font-size:110%; } .client-js .vector-search-box-vue .cdx-search-input{ position:relative; } .client-js .vector-search-box-vue .vector-typeahead-search .cdx-text-input__input{ border-right-color:#a2a9b1 !important; } .client-js .vector-search-box-vue .vector-typeahead-search .cdx-search-input__end-button{ position:absolute; right:0; } html.client-js .vector-search-box-vue .vector-typeahead-search--active .cdx-search-input__end-button, html.client-js .vector-search-box-vue .vector-typeahead-search:hover .cdx-search-input__end-button{ position:relative; } .mw-content-container #content{ border-radius:10px; border:1px solid #c8ccd1; padding:10px; padding-top:8px; } body:not(.action-view):not(.ns-special) .vector-body-before-content{ float:right; } body.ns-special .vector-body-before-content .mw-indicators{ margin-top:6px; float:right; padding-top:0; } body:not(.ns-special) .vector-body-before-content .mw-indicators{ margin-top:2px; float:right; padding-top:0; margin-bottom:0.2px; } .vector-body-before-content > .mw-indicators img, .mw-body-header .mw-indicators img{ max-height:1.7em; } body:not(.page-Wikibooks_Strona_główna).action-view:not(.ns-special) .vector-body-before-content::after{ content:''; display:block; clear:both; order:2; } body.action-view #bodyContent div#siteSub{ display:block !important; } body.action-view:not(.ns-special) .vector-body-before-content #siteSub{ display:block; float:left; order:1; margin-top:5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size:0.8125rem; line-height:1.4em; padding-bottom:1px; } body.action-view:not(.ns-special) .vector-body-before-content{ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } body.action-view:not(.ns-special) .vector-body-before-content .mw-indicators{ order:3; white-space:nowrap; } body.action-view:not(.ns-special) .vector-body-before-content{ border-bottom:1px solid #c8ccd1; padding-bottom:3px; display:flex; flex-direction:row; justify-content:space-between; align-items: flex-end; } #mw-content-text{ margin-top:10px; } .catlinks{ margin-top:7px !important; } .mw-category-generated > :first-child > h2:first-child{ margin-top:14px; } body.ns-14 .mw-category-generated > p:only-child{ border:1px solid #c8ccd1; padding:5px; margin-top:5px; margin-bottom:5px; } body.ns-14 .mw-parser-output.blank{ margin-top:-3px; } body.ns-14 .mw-parser-output.blank ~ .printfooter{ margin-top:3px; } #content::after{ content:''; clear:both; display:block; } #bodyContent{ margin-bottom:0; box-sizing: border-box; } body.action-edit #bodyContent #editform{ margin-top:5px; } body{ font-family: Arial, Helvetica, "Free Helvetian", FreeSans, sans-serif; font-stretch:normal; font-variant:normal; font-style:normal; font-weight:normal; font-size-adjust:none; letter-spacing:normal; word-spacing:normal; text-align:left; word-wrap:break-word; hyphens:auto; } body.action-history #mw-content-text > *:first-child{ margin-top:8px; } .mw-parser-output hr{ font-size:1.2em; } #mw-content-text, #mw-content-text .mw-message-box-warning, #mw-content-text .mw-parser-output{ font-size: calc(0.875rem * 0.89944); line-height: 1.4em; } .mw-ui-icon{ font-size:1rem; } body{ font-size:1rem; line-height:1.4em; } /**/ body.action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before, body.action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{ content:''; clear:both; display:block; } body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before, body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{ margin-bottom:8px; } body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before, body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{ margin-bottom:0; } body.action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.blank)::after, body.action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.blank)::after{ content:''; clear:both; display:block; } body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.blank)::after, body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.blank)::after{ margin-top:3px; } body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output:last-child:not(.blank)::after, body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output.last-child:not(.blank)::after{ margin-top:0; } body.ns-special.action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before, body.ns-special.action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{ margin-bottom:0; } body.ns-special.action-view #mw-content-text .mw-parser-output:last-child:not(.blank)::after, body.ns-special.action-view #mw-content-text .mw-parser-output.last-child:not(.blank)::after{ margin-top:0; } /**/ body.action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before, body.action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{ content:''; clear:both; display:block; } body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before, body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{ margin-bottom:8px; } body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before, body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{ margin-bottom:0; } body.action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after, body.action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{ content:''; clear:both; display:block; } body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after, body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{ margin-top:3px; } body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after, body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{ margin-top:0; } body.ns-special.action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before, body.ns-special.action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{ margin-bottom:0; } body.ns-special.action-view #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after, body.ns-special.action-view #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{ margin-top:0; } /**/ body:not(.page-Wikibooks_Strona_główna) .printfooter{ display:block; padding:5px; border:1px solid #c8ccd1; margin-top:6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; clear:both; } .noarticletext{ margin-top:0; margin-bottom:7px; } body.action-view #bodyContent #contentSub{ display:block !important; } #contentSub{ margin-top:5px !important; } #contentSub > #pwContent > #pwPathway, #contentSub > #pwContent > #pwPathway + #pwNav, #contentSub > #mw-content-subtitle, #contentSub > #mw-content-subtitle > .subpages, #contentSub2 > .subpages > .mw-undelete-subtitle{ font-size:0.75rem; line-height:1.2em; } #contentSub2{ margin-top:4px !important; } #contentSub2 > .subpages{ border-bottom:1px solid #c8ccd1; padding-bottom:5px; padding-top:2px; } #pwContent:not(:empty){ border-bottom:1px solid #c8ccd1; padding-bottom:3px; font-size:100%; } html:not(.client-nojs) body:not(.mw-special-Watchlist) #mw-content-subtitle:not(:empty), html.client-nojs #mw-content-subtitle:not(:empty){ border-bottom:1px solid #c8ccd1; padding-bottom:3px; } #mw-content-subtitle > .subpages:not(:last-child){ border-bottom:1px solid #c8ccd1; padding-bottom:3px; } #mw-content-subtitle .mw-message-box-warning:not(:last-child){ margin:10px 0; } #mw-content-subtitle .mw-message-box-warning:last-child{ margin:10px 0 8px 0; } body.action-edit #mw-content-text > :not(.mw-editnotice):not(.mw-parser-output):not(.mw-message-box-warning):first-child{ margin-top:10px !important; margin-bottom:10px !important; } #mw-content-subtitle #redirectsub, #mw-content-subtitle .mw-redirectedfrom{ display:block; margin: 5px 0 2px 0; } #mw-content-subtitle .mw-redirectedfrom:not(:last-child){ border-bottom: 1px solid #c8ccd1; } #mw-content-text > .mw-message-box-warning:first-child{ margin:10px 0; } #mw-content-text > .mw-message-box-warning{ margin:5px 0 10px 0; } body.action-edit #mw-content-text > .mw-editnotice:first-child{ margin-top:12px; } body.action-edit #mw-content-text > :not(.mw-editnotice):not(.mw-parser-output):not(.mw-message-box-warning):first-child{ margin-top:-3px; } body.action-view.ns-special #mw-content-text > :not(div):not(p):first-child{ margin-top:18px; } body:not(.action-view) #mw-content-text > p:first-child{ margin-top:3px; } #contentsub::after{ content:''; display:block; } .previewnote, #wikiPreview.ontop{ margin-bottom:10px; max-width:unset; } body.action-submit #mw-content-text > #wikiPreview > .previewnote > #mw-previewheader{ margin-top:0.8em; margin-bottom:0.4em; } div.thumb.tright:first-child, div.thumb.tleft:first-child{ margin-top:0; } #mw-content-text .mw-parser-output > p:first-child{ margin-top:0; } #mw-content-text .mw-parser-output > p:not(.br-clear-both):last-child{ margin-bottom:0; } #mw-content-text .mw-parser-output > :not(p).floatleft:first-child + p, #mw-content-text .mw-parser-output > :not(p).floatright:first-child + p, #mw-content-text .mw-parser-output > :not(p).tleft:first-child + p, #mw-content-text .mw-parser-output > :not(p).tright:first-child + p{ margin-top:0; } #mw-content-text .mw-parser-output .template-documentation:first-of-type{ margin-top:0; box-sizing:border-box; } #mw-content-text .mw-parser-output > :not(style):not(link) ~ .template-documentation{ margin-top:10px !important; box-sizing:border-box !important; } #mw-content-text .mw-parser-output #documentation-meta-data:not(:last-child){ margin-top:3px !important; margin-bottom:3px !important; } #mw-content-text .mw-parser-output #documentation-meta-data:last-child{ margin-top:3px !important; margin-bottom:0 !important; } body.ns-14 .mw-category-generated > * > .mw-content-ltr > .mw-category > .mw-category-group > h3.only-whitespace.is-only-whitespace::before{ display:block; content:'(pusta)'; float:left; } .vector-body{ font-size: calc(1rem * 0.875); line-height: 1.5em; } @media all and (min-width:999px){ html.vector-feature-page-tools-pinned-enabled #bodyContent.vector-body, html.vector-feature-appearance-pinned-clientpref-1 #bodyContent.vector-body{ border-right: 1px solid #c8ccd1; border-bottom:1px solid #c8ccd1; padding-right:0.625rem; padding-bottom:0.625rem; } } .vector-toc .vector-toc-list-item a{ font-size:0.8125rem; line-height:1.4em; } .wb-langlinks-link > a::before{ margin-left:-8px; } /**/ .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover, .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:active:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:active:hover{ display:block; outline:1px solid #eaecf0; border-radius:10px; box-sizing:border-box; width:100%; } .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover{ background-color:blue !important; } .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:active:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:active:hover, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover{ background-color:green !important; } .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover{ color:white !important; } .vector-pinned-container .vector-toc ul.vector-toc-contents li > a, .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a, .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a, .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a{ display:block; width:100%; text-decoration:none; font-size: 0.8125rem; line-height:1.4em; box-sizing:border-box; padding:0 5px !important; } .vector-feature-toc-pinned-clientpref-1.vector-toc-available #vector-toc-pinned-container{ margin-top:0; } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available .vector-main-menu-container{ margin-bottom:5px; } .vector-column-start .vector-main-menu-container, html.vector-feature-toc-pinned-clientpref-1.vector-toc-available .vector-column-start .vector-sticky-pinned-container{ margin-left:12px; } @media (min-width: 999px){ html.vector-feature-toc-pinned-clientpref-1.vector-toc-available #vector-toc-pinned-container{ border-radius:10px; border:1px solid #c8ccd1; padding:8px; padding-left:6px; } } #mw-panel-toc-list{ margin-top:6px; } #vector-toc-pinned-container .vector-toc::after{ display:none; } .vector-toc .vector-toc-text{ padding: 3px 0 !important; } button.cdx-button{ z-index:1; } .vector-menu-tabs .mw-list-item.vector-tab-noicon > a, .vector-page-toolbar-container .vector-dropdown.vector-tab-noicon > a, .vector-menu-tabs .mw-list-item .vector-dropdown-label, .vector-page-toolbar-container .vector-dropdown .vector-dropdown-label{ padding-bottom:3px; margin-bottom:0; } .vector-menu-tabs .mw-list-item > a, .vector-page-toolbar-container .vector-dropdown > a, .vector-menu-tabs .mw-list-item .vector-dropdown-label, .vector-page-toolbar-container .vector-dropdown .vector-dropdown-label{ max-height:37px; line-height:1.4em; } .mw-diff-table-prefix{ max-width:calc( 100% - 2em ); } .vector-column-start{ border-top:0; margin-top:0; } html.vector-feature-page-tools-pinned-enabled .vector-column-end, html.vector-feature-appearance-pinned-clientpref-1 .vector-column-end{ margin-top:0; margin-left:-1px; border: 1px solid #c8ccd1; border-top:0; padding-top:2px; } .vector-column-start .vector-sticky-pinned-container{ margin-left:0; } .vector-header-container .mw-header{ max-width:none; min-width:auto; } .vector-header-container{ padding-left:0; padding-right:0; } .vector-header-container .mw-header{ padding-left:1.5rem; padding-right:1.5rem; } .client-js.vector-feature-toc-pinned-clientpref-0 body:not(.vector-sticky-header-visible) .vector-page-titlebar-toc{ margin-right:0; } html.vector-feature-toc-pinned-clientpref-1.vector-toc-available #vector-toc-pinned-container{ padding-left:15px; } .vector-pinned-container{ padding: 16px 8px; padding-top:5px; padding-bottom:0; } .vector-dropdown .vector-dropdown-content{ padding-right:4px; padding-bottom:0; /*width:800px;*/ } .vector-dropdown#vector-page-titlebar-toc .vector-dropdown-content{ padding-left:12px } .vector-dropdown#vector-page-tools-dropdown .vector-dropdown-content{ padding-left:4px; padding-bottom:8px; } .vector-dropdown#vector-main-menu-dropdown .vector-dropdown-content{ padding-left:4px; } .client-js.vector-feature-toc-pinned-clientpref-0 body:not(.vector-sticky-header-visible) .vector-page-titlebar-toc .vector-dropdown-content{ /*max-width:200px;*/ } .mw-header{ grid-template: auto / 15em minmax(0,1fr); grid-template-areas:'headerStart headerEnd'; } #p-navigation.mw-portlet-navigation{ margin-top:0px; } .vector-menu.mw-portlet:not(.mw-portlet-navigation){ margin-top:4px; } .vector-toc .vector-toc-list-item-active > .vector-toc-link .vector-toc-text, .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-expanded) > .vector-toc-link .vector-toc-text, .vector-toc .vector-toc-list-item-active.vector-toc-level-1-active > .vector-toc-link .vector-toc-text{ width:unset !important; } @media not screen{ } html.vector-feature-custom-font-size-clientpref-0{ font-size:14px; } html.vector-feature-custom-font-size-clientpref-1{ font-size:16px; } html.vector-feature-custom-font-size-clientpref-2{ font-size:18px; } .oo-ui-buttonElement { vertical-align: text-top; } blw8h0tycyd40jgmx6mtoxgcdo2mh01 Szablon:Tabela nawigacyjna/styles.css 10 59605 556461 553247 2026-09-15T03:17:54Z Persino 2851 556461 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; display:block; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 10q0zr4xcq7yvl934gqms46ck41h6ic 556462 556461 2026-09-15T03:19:06Z Persino 2851 556462 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; display:block; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0.2em; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 32autvvuk615bwsbrsr5fdl3j37rc10 556463 556462 2026-09-15T03:20:05Z Persino 2851 556463 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; display:block; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0.5em; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ gkzn8h1fr6zptna998s4w9mjb94ohwc 556471 556463 2026-09-15T03:44:36Z Persino 2851 556471 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0.5em; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 4zebzhd037nv9pl3wx9af8f6tl61xdw 556473 556471 2026-09-15T03:51:23Z Persino 2851 556473 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div.tabela_nawigacyjna-tytuł, table.tabela_nawigacyjna > tbody > tr:last-child > td > div.tabela_nawigacyjna-tytuł{ box-sizing:border-box; width:calc( 100% - 6em ); } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0.5em; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 0q6f5b4ejjat4s64x8ma8s63gz6kvk2 556474 556473 2026-09-15T03:52:49Z Persino 2851 556474 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł, table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{ box-sizing:border-box; width:calc( 100% - 6em ); } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0.5em; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ mdv5thtxdwnferglc7slu7n672sd92z 556537 556474 2026-09-15T09:34:51Z Persino 2851 556537 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł, table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{ box-sizing:border-box; width:calc( 100% - 6em ); } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0.5em; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ euiy6vtvi5xvyc8mvg3xbeci3kdqn9x 556542 556537 2026-09-15T10:02:18Z Persino 2851 556542 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł, table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{ box-sizing:border-box; width:calc( 100% - 6em ); } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div, table.tabela_nawigacyjna > tbody > tr:last-child > td > div{ padding:0.5em; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 7vvnm0up3378q76fc277dtpn7wwlwbx 556543 556542 2026-09-15T10:06:03Z Persino 2851 556543 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł, table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{ box-sizing:border-box; width:calc( 100% - 6em ); } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div, table.tabela_nawigacyjna > tbody > tr:last-child > td > div{ padding:0.5em; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ rrx56evszx8vuhzv8nb1n84jjb3gg5f 556544 556543 2026-09-15T10:13:38Z Persino 2851 556544 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł, table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{ box-sizing:border-box; width:calc( 100% - 6em ); } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div, table.tabela_nawigacyjna > tbody > tr:last-child > td > div{ padding:0.5em; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol{ margin:0; margin-left:1em; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 811lf8wcisw54vnpezedrjybkw12fc0 556545 556544 2026-09-15T10:16:14Z Persino 2851 556545 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł, table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{ box-sizing:border-box; width:calc( 100% - 6em ); } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div, table.tabela_nawigacyjna > tbody > tr:last-child > td > div{ padding:0.5em; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol{ margin-left:1em; margin-right:0; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ cot0c822zt2u75s8z7n6bldvpeianr7 556546 556545 2026-09-15T10:19:44Z Persino 2851 556546 sanitized-css text/css table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr, table.tabela_nawigacyjna > tbody > tr > th, table.tabela_nawigacyjna > tbody > tr > td{ width:100%; max-width:100%; box-sizing:border-box; } table.tabela_nawigacyjna{ width:auto; } table.tabela_nawigacyjna, table.tabela_nawigacyjna > tbody, table.tabela_nawigacyjna > tbody > tr{ border:0; } table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł, table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{ box-sizing:border-box; width:calc( 100% - 6em ); } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ padding:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div, table.tabela_nawigacyjna > tbody > tr:last-child > td > div{ padding:0.5em; } table.tabela_nawigacyjna > tbody > tr:last-child > th, table.tabela_nawigacyjna > tbody > tr:last-child > td{ border-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul:first-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol:first-child{ margin-top:0; } table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul:last-child, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol:last-child{ margin-bottom:0; } table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul, table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol{ margin-left:0; margin-right:0; list-style-position: inside; margin-inline-start: 0; } table.tabela_nawigacyjna.szerokość{ display:flex; flex-direction:row; width:auto; margin-left:0; margin-right:0; margin-top:0.2em; margin-bottom:0; } table.tabela_nawigacyjna, table.tabela_nawigacyjna *{ word-wrap:break-word; word-break:break-word; } table.tabela_nawigacyjna.szerokość > tbody{ display:table; } table.tabela_nawigacyjna.szerokość > tbody, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, table.tabela_nawigacyjna.szerokość > tbody > tr, hr + table.tabela_nawigacyjna, hr + style + table.tabela_nawigacyjna, hr + link + table.tabela_nawigacyjna{ margin-top:0; } table.tabela_nawigacyjna:last-child{ margin-bottom:0; } @media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){ html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{ animation: nie_hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{ animation: hover_odkrywca 0s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{ animation: nie_hover_odkrywca 5s forwards; } html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{ animation: hover_odkrywca 0s forwards; } } @keyframes hover_odkrywca { 0% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 99% { opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } 100%{ opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } } @keyframes nie_hover_odkrywca { 0% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 99% { opacity:1; visibility:visible; height:auto; overflow:visible; position:relative; } 100%{ opacity:0; visibility:hidden; height:0; overflow:hidden; position:absolute; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ esf4ttgim7hak5e24ro7sbmf7yd0niv Wikibooks:Tablica ogłoszeń/Archiwum 4 60008 556464 552170 2026-09-15T03:25:55Z Persino 2851 556464 wikitext text/x-wiki {{#switch: {{FULLPAGENAME}} | {{Ns:Project}}:Tablica ogłoszeń = | {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}} | {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!-- -->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!-- -->}}<!-- --> {{lr|Tablica ogłoszeń/Archiwum|Archiwum}}: {{sr|2006|p=Archiwum}} ~ {{sr|2007|p=Archiwum}} ~ {{sr|2008|p=Archiwum}} ~ {{sr|2009|p=Archiwum}} ~ {{sr|2010|p=Archiwum}} ~ {{sr|2011|p=Archiwum}} ~ {{sr|2012|p=Archiwum}} ~ {{sr|2013|p=Archiwum}} ~ {{sr|2014|p=Archiwum}} ~ {{sr|2015|p=Archiwum}} ~ {{sr|2016|p=Archiwum}} ~ {{sr|2017|p=Archiwum}} ~ {{sr|2018|p=Archiwum}} ~ {{sr|2019|p=Archiwum}} ~ {{sr|2020|p=Archiwum}} ~ {{sr|2021|p=Archiwum}} ~ {{sr|2022|p=Archiwum}} ~ {{sr|2023|p=Archiwum}} ~ {{sr|2024|p=Archiwum}} ~ {{sr|2025|p=Archiwum}} 6lojc60ul6o1fl3cpf3e6mvwdo0lf71 556465 556464 2026-09-15T03:30:02Z Persino 2851 556465 wikitext text/x-wiki {{#switch: {{FULLPAGENAME}} | {{Ns:Project}}:Tablica ogłoszeń = | {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}} | {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!-- -->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!-- -->}}<!-- -->{{Div start}} {{lr|Tablica ogłoszeń/Archiwum|Archiwum}}: {{sr|2006|p=Archiwum}} ~ {{sr|2007|p=Archiwum}} ~ {{sr|2008|p=Archiwum}} ~ {{sr|2009|p=Archiwum}} ~ {{sr|2010|p=Archiwum}} ~ {{sr|2011|p=Archiwum}} ~ {{sr|2012|p=Archiwum}} ~ {{sr|2013|p=Archiwum}} ~ {{sr|2014|p=Archiwum}} ~ {{sr|2015|p=Archiwum}} ~ {{sr|2016|p=Archiwum}} ~ {{sr|2017|p=Archiwum}} ~ {{sr|2018|p=Archiwum}} ~ {{sr|2019|p=Archiwum}} ~ {{sr|2020|p=Archiwum}} ~ {{sr|2021|p=Archiwum}} ~ {{sr|2022|p=Archiwum}} ~ {{sr|2023|p=Archiwum}} ~ {{sr|2024|p=Archiwum}} ~ {{sr|2025|p=Archiwum}} {{Div koniec}} 2yruqa4gyrhm53w3ssne7141sdnjjp4 556467 556465 2026-09-15T03:35:33Z Persino 2851 556467 wikitext text/x-wiki {{#switch: {{FULLPAGENAME}} | {{Ns:Project}}:Tablica ogłoszeń = | {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}} | {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!-- -->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!-- -->}}<!-- --> {{Tabela nawigacyjna | styl = width:100%;margin-left:0;margin-right:0;box-sizing:border-box; | funkcja = PokazanaWikitabelowaListaMenu | tytuł = Spis - Archiwum ogłoszeń | spis = {{lr|Tablica ogłoszeń/Archiwum|Archiwum}}: {{sr|2006|p=Archiwum}} ~ {{sr|2007|p=Archiwum}} ~ {{sr|2008|p=Archiwum}} ~ {{sr|2009|p=Archiwum}} ~ {{sr|2010|p=Archiwum}} ~ {{sr|2011|p=Archiwum}} ~ {{sr|2012|p=Archiwum}} ~ {{sr|2013|p=Archiwum}} ~ {{sr|2014|p=Archiwum}} ~ {{sr|2015|p=Archiwum}} ~ {{sr|2016|p=Archiwum}} ~ {{sr|2017|p=Archiwum}} ~ {{sr|2018|p=Archiwum}} ~ {{sr|2019|p=Archiwum}} ~ {{sr|2020|p=Archiwum}} ~ {{sr|2021|p=Archiwum}} ~ {{sr|2022|p=Archiwum}} ~ {{sr|2023|p=Archiwum}} ~ {{sr|2024|p=Archiwum}} ~ {{sr|2025|p=Archiwum}} }} 5ps4v7f68hctkf4y9v61wolgpumgjr6 556468 556467 2026-09-15T03:37:06Z Persino 2851 556468 wikitext text/x-wiki {{#switch: {{FULLPAGENAME}} | {{Ns:Project}}:Tablica ogłoszeń = | {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}} | {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!-- -->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!-- -->}}<!-- --> {{Tabela nawigacyjna | klasa = szerokość | funkcja = PokazanaWikitabelowaListaMenu | tytuł = Spis - Archiwum ogłoszeń | spis = {{lr|Tablica ogłoszeń/Archiwum|Archiwum}}: {{sr|2006|p=Archiwum}} ~ {{sr|2007|p=Archiwum}} ~ {{sr|2008|p=Archiwum}} ~ {{sr|2009|p=Archiwum}} ~ {{sr|2010|p=Archiwum}} ~ {{sr|2011|p=Archiwum}} ~ {{sr|2012|p=Archiwum}} ~ {{sr|2013|p=Archiwum}} ~ {{sr|2014|p=Archiwum}} ~ {{sr|2015|p=Archiwum}} ~ {{sr|2016|p=Archiwum}} ~ {{sr|2017|p=Archiwum}} ~ {{sr|2018|p=Archiwum}} ~ {{sr|2019|p=Archiwum}} ~ {{sr|2020|p=Archiwum}} ~ {{sr|2021|p=Archiwum}} ~ {{sr|2022|p=Archiwum}} ~ {{sr|2023|p=Archiwum}} ~ {{sr|2024|p=Archiwum}} ~ {{sr|2025|p=Archiwum}} }} 7io6jne3y9q2wf5ugaqnfvmvhokzosp 556534 556468 2026-09-15T09:27:55Z Persino 2851 556534 wikitext text/x-wiki {{#switch: {{FULLPAGENAME}} | {{Ns:Project}}:Tablica ogłoszeń = | {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}} | {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!-- -->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!-- -->}}<!-- --> {{Tabela nawigacyjna | klasa = szerokość | funkcja = PokazanaWikitabelowaListaMenu | tytuł = Spis - Archiwum ogłoszeń | spis = {{lr|Tablica ogłoszeń/Archiwum|Archiwum}}: {{sr|2006|p=Archiwum}} ~ {{sr|2007|p=Archiwum}} ~ {{sr|2008|p=Archiwum}} ~ {{sr|2009|p=Archiwum}} ~ {{sr|2010|p=Archiwum}} ~ {{sr|2011|p=Archiwum}} ~ {{sr|2012|p=Archiwum}} ~ {{sr|2013|p=Archiwum}} ~ {{sr|2014|p=Archiwum}} ~ {{sr|2015|p=Archiwum}} ~ {{sr|2016|p=Archiwum}} ~ {{sr|2017|p=Archiwum}} ~ {{sr|2018|p=Archiwum}} ~ {{sr|2019|p=Archiwum}} ~ {{sr|2020|p=Archiwum}} ~ {{sr|2021|p=Archiwum}} ~ {{sr|2022|p=Archiwum}} ~ {{sr|2023|p=Archiwum}} ~ {{sr|2024|p=Archiwum}} ~ {{sr|2025|p=Archiwum}}}} a9z5k7ani0wijiwax51wk2w626pjdok 556538 556534 2026-09-15T09:35:36Z Persino 2851 556538 wikitext text/x-wiki {{#switch: {{FULLPAGENAME}} | {{Ns:Project}}:Tablica ogłoszeń = | {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}} | {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!-- -->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!-- -->}}<!-- --> {{Tabela nawigacyjna | klasa = szerokość | funkcja = PokazanaWikitabelowaListaMenu | tytuł = Spis - Archiwum ogłoszeń | spis = {{Span| {{lr|Tablica ogłoszeń/Archiwum|Archiwum}}: {{sr|2006|p=Archiwum}} ~ {{sr|2007|p=Archiwum}} ~ {{sr|2008|p=Archiwum}} ~ {{sr|2009|p=Archiwum}} ~ {{sr|2010|p=Archiwum}} ~ {{sr|2011|p=Archiwum}} ~ {{sr|2012|p=Archiwum}} ~ {{sr|2013|p=Archiwum}} ~ {{sr|2014|p=Archiwum}} ~ {{sr|2015|p=Archiwum}} ~ {{sr|2016|p=Archiwum}} ~ {{sr|2017|p=Archiwum}} ~ {{sr|2018|p=Archiwum}} ~ {{sr|2019|p=Archiwum}} ~ {{sr|2020|p=Archiwum}} ~ {{sr|2021|p=Archiwum}} ~ {{sr|2022|p=Archiwum}} ~ {{sr|2023|p=Archiwum}} ~ {{sr|2024|p=Archiwum}} ~ {{sr|2025|p=Archiwum}}}} }} rls8t1w2725j1n42tqohf6hhhe0xabr 556539 556538 2026-09-15T09:39:24Z Persino 2851 556539 wikitext text/x-wiki {{#switch: {{FULLPAGENAME}} | {{Ns:Project}}:Tablica ogłoszeń = | {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}} | {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!-- -->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!-- -->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!-- -->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!-- -->}}<!-- --> {{Tabela nawigacyjna | klasa = szerokość | funkcja = PokazanaWikitabelowaListaMenu | tytuł = Spis - Archiwum ogłoszeń | spis = {{P| {{lr|Tablica ogłoszeń/Archiwum|Archiwum}}: {{sr|2006|p=Archiwum}} ~ {{sr|2007|p=Archiwum}} ~ {{sr|2008|p=Archiwum}} ~ {{sr|2009|p=Archiwum}} ~ {{sr|2010|p=Archiwum}} ~ {{sr|2011|p=Archiwum}} ~ {{sr|2012|p=Archiwum}} ~ {{sr|2013|p=Archiwum}} ~ {{sr|2014|p=Archiwum}} ~ {{sr|2015|p=Archiwum}} ~ {{sr|2016|p=Archiwum}} ~ {{sr|2017|p=Archiwum}} ~ {{sr|2018|p=Archiwum}} ~ {{sr|2019|p=Archiwum}} ~ {{sr|2020|p=Archiwum}} ~ {{sr|2021|p=Archiwum}} ~ {{sr|2022|p=Archiwum}} ~ {{sr|2023|p=Archiwum}} ~ {{sr|2024|p=Archiwum}} ~ {{sr|2025|p=Archiwum}} }}}} 2jjs2nhsgi1ksk1ef3op3snxwkcfsew Szablon:NawigacjaSpecjalna/Nawigacja/Pomoc:Spis treści 10 61114 556456 554753 2026-09-15T02:48:16Z Persino 2851 556456 wikitext text/x-wiki <includeonly>{{Układ autonawigacji|krok={{{1}}} |automat manualny=tak |spis treści=Pomoc:Spis treści |Pomoc:Spis treści|Pomoc - Spis treści |Pomoc:Spis treści/Wstęp|Wstęp |Wikibooks:Witamy nowicjuszy|Witamy nowicjuszy |Wikibooks:Zasady i wskazówki|Zasady i wskazówki |Wikibooks:Szybka pomoc|Szybka pomoc |Wikibooks:Czym jest Wikibooks|Czym jest Wikibooks? |Wikibooks:Różnice między Wikipedią i Wikibooks|Różnice między Wikipedią i Wikibooks |Wikibooks:Dlaczego warto rozpocząć współpracę|Dlaczego warto rozpocząć współpracę? |Wikibooks:Dlaczego używać wolnych podręczników|Dlaczego używać wolnych podręczników? |Wikibooks:Dlaczego nie pisać na Wikibooks|Dlaczego nie pisać na Wikibooks? |Wikibooks:Wikietykieta|Wikietykieta |Pomoc:Wikietykieta|Wikietykieta |Wikibooks:Neutralny punkt widzenia|Neutralny punkt widzenia |Pomoc:Żargon użytkowników|Żargon użytkowników |Wikibooks:Informacje prawne|Informacje prawne |Wikibooks:Prawa autorskie|Prawa autorskie |Pomoc:Spis treści/Edycja|Edycja |Wikibooks:Brudnopis|Brudnopis |Pomoc:Edycja kodu|Edycja kodu |Wikibooks:Import stron|Import stron |Wikibooks:Etapy rozwoju książek|Etapy rozwoju książek |Wikibooks:Ilustracja Wikibooks|Ilustracja Wikibooks |Pomoc:Jak edytować artykuły|Jak edytować artykuły? |Wikibooks:Nazewnictwo artykułów|Nazewnictwo artykułów |Pomoc:Podświetlanie składni|Podświetlanie składni |Pomoc:Problemy z polskimi znakami|Problemy z polskimi znakami |Pomoc:Quiz|Quiz |Pomoc:Tworzenie podręcznika|Tworzenie podręcznika |Wikibooks:Wandalizm|Wandalizm |Wikibooks:Podręczniki do druku|Podręczniki do druku |Pomoc:Tworzenie wersji do druku|Tworzenie wersji do druku |Pomoc:Tworzenie wersji PDF|Tworzenie wersji PDF |Pomoc:Tworzenie wersji PDF/javaLatex|Tworzenie wersji PDF/javaLatex |Pomoc:Książki|Książki |Pomoc:Spis treści/Wkład miesiąca|Wkład miesiąca |Wikibooks:Wkład miesiąca/Aktualne głosowanie|Aktualne głosowanie |Wikibooks:Wkład miesiąca/Wstęp|Wstęp |Wikibooks:Wkład miesiąca/Regulamin|Regulamin |Wikibooks:Wkład miesiąca/Nominacje|Nominacje |Pomoc:Spis treści/Komunikacja|Komunikacja |Wikibooks:Kanał IRC|Kanał IRC |Wikibooks:Kontakt|Kontakt |Wikibooks:Portal użytkowników|Portal użytkowników |Pomoc:Archiwizowanie strony dyskusji|Archiwizowanie strony dyskusji |Wikibooks:Przedstawicielstwo dyplomatyczne|Przedstawicielstwo dyplomatyczne |Pomoc:Spis treści/Korzystanie z Wikibooks|Korzystanie z Wikibooks |Wikibooks:Jak przeglądać Wikibooks|Jak przeglądać Wikibooks? |Wikibooks:Księgozbiór|Księgozbiór |Wikibooks:Księgozbiór/Wybrane|Księgozbiór - Wybrane |Wikibooks:Księgozbiór/Alfabetycznie|Księgozbiór - Alfabetycznie |Wikibooks:Księgozbiór/Tematycznie|Księgozbiór - Tematycznie |Kategoria:Kategorie podręcznikowe|Księgozbiór - Kategorie podręcznikowe |Wikibooks:Księgozbiór/Poziom|Księgozbiór - Poziom |Wikibooks:Księgozbiór/Status|Księgozbiór - Status |Portal:Nauki ścisłe i przyrodnicze|Portal - Nauki ścisłe i przyrodnicze |Portal:Informatyka|Portal - Informatyka |Portal:Nauki techniczne|Portal - Nauki techniczne |Portal:Nauki społeczne i humanistyczne|Portal - Nauki społeczne i humanistyczne |Portal:Sport i rozrywka|Portal - Sport i rozrywka |Portal:Hobby, poradniki i książki różne|Portal - Hobby, poradniki i książki różne |Wikibooks:Promocja|Promocja |Pomoc:Tryb ciemny|Tryb ciemny |Pomoc:Spis treści/Historia Wikibooks|Historia Wikibooks |Wikibooks:Historia Wikibooks|Historia Wikibooks |Wikibooks:Piąte urodziny|Piąte urodziny |Wikibooks:6. urodziny polskich Wikibooks|6. urodziny polskich Wikibooks |Wikibooks:Wikikalendarz 2009|Wikikalendarz 2009 |Wikibooks:Sprzątanie Wikibooks|Sprzątanie Wikibooks |Wikibooks:Sprzątanie Wikibooks/2009|Sprzątanie Wikibooks - 2009 |Wikibooks:Sprzątanie Wikibooks/2011|Sprzątanie Wikibooks - 2011 |Wikibooks:Statystyki|Statystyki |Pomoc:Spis treści/Technikalia|Technikalia |Wikibooks:Przestrzenie nazw|Przestrzenie nazw |Wikibooks:Poczekalnia|Poczekalnia |Wikibooks:Poczekalnia/naprawa|Poczekalnia - Naprawa |Wikibooks:Poczekalnia/prowokacje|Poczekalnia - Prowokacje |Wikibooks:Poczekalnia/artykuły|Poczekalnia - Artykuły |Wikibooks:Poczekalnia/kwestie techniczne|Poczekalnia - Kwestie techniczne |Wikibooks:Poczekalnia/Zgłoszenia|Poczekalnia - Zgłoszenia |Wikibooks:Poczekalnia/Załatwione|Poczekalnia - Załatwione |Wikibooks:VisualEditor|VisualEditor |Pomoc:Nowa skórka – wektor|Nowa skórka – wektor |Wikibooks:Skróty|Skróty |Pomoc:Spis treści/Strona główna|Strona główna |Pomoc:Spis treści/Wybrane książki|Wybrane książki |Wikibooks:Mechanizm MediaWiki|Mechanizm MediaWiki |Wikibooks:Szablony|Mechanizm MediaWiki - Szablony |Wikibooks:Moduły|Mechanizm MediaWiki - Moduły |Wikibooks:Moduły/Parametry|Moduł:Parametry |Wikibooks:Moduły/Parametry/Tom I|Moduł:Parametry - Tom I |Wikibooks:Moduły/Parametry/Tom II|Moduł:Parametry - Tom II |Wikibooks:Moduły/Parametry/Tom III|Moduł:Parametry - Tom III |Wikibooks:Moduły/Parametry/Tom IV|Moduł:Parametry - Tom IV |Wikibooks:Moduły/Parametry/Tom V|Moduł:Parametry - Tom V |Wikibooks:Moduły/Parametry/Tom VI|Moduł:Parametry - Tom VI |Wikibooks:Moduły/Parametry/Tom VII|Moduł:Parametry - Tom VII |Wikibooks:Moduły/Parametry/Tom VIII|Moduł:Parametry - Tom VIII |Wikibooks:Moduły/Parametry/Tom IX|Moduł:Parametry - Tom IX |Wikibooks:Moduły/Parametry/Tom X|Moduł:Parametry - Tom X |Wikibooks:Moduły/Parametry/Tom XI|Moduł:Parametry - Tom XI |Wikibooks:Moduły/Parametry/Tom XII|Moduł:Parametry - Tom XII |Wikibooks:Moduły/Parametry/Tom XIII|Moduł:Parametry - Tom XIII |Wikibooks:Moduły/Parametry/Tom XIV|Moduł:Parametry - Tom XIV |Wikibooks:Moduły/Parametry/Tom XV|Moduł:Parametry - Tom XV |Wikibooks:Moduły/Parametry/Tom XVI|Moduł:Parametry - Tom XVI |Wikibooks:Moduły/Parametry/Tom XVII|Moduł:Parametry - Tom XVII |Wikibooks:Moduły/Parametry/Tom XVIII|Moduł:Parametry - Tom XVIII |Wikibooks:Moduły/Parametry/Tom XIX|Moduł:Parametry - Tom XIX |Wikibooks:Moduły/Parametry/Tom XX|Moduł:Parametry - Tom XX |Wikibooks:Moduły/Html|Moduł:Html |Wikibooks:Moduły/Książkowe|Moduł:Książkowe |Wikibooks:Moduły/Nazwy|Moduł:Nazwy |Wikibooks:Moduły/Nazwy/Tom I|Moduł:Nazwy - Tom I |Wikibooks:Moduły/Nazwy/Tom II|Moduł:Nazwy - Tom II |Wikibooks:Moduły/Nazwy/Tom III|Moduł:Nazwy - Tom III |Wikibooks:Moduły/Nazwy/Tom IV|Moduł:Nazwy - Tom IV |Wikibooks:Moduły/Nazwy/Np|Moduł:Nazwy - Np |Wikibooks:Moduły/Pudełko|Moduł:Pudełko |Wikibooks:Moduły/Pudełko/Tom I|Moduł:Pudełko - Tom I |Wikibooks:Moduły/Pudełko/Tom II|Moduł:Pudełko - Tom II |Wikibooks:Moduły/Pudełko/Tom III|Moduł:Pudełko - Tom III |Wikibooks:Moduły/Pudełko/Tom IV|Moduł:Pudełko - Tom IV |Wikibooks:Moduły/Pudełko/Tom V|Moduł:Pudełko - Tom V |Wikibooks:Moduły/Pudełko/Pomocne|Moduł:Pudełko - Pomocne |Wikibooks:Moduły/Pudełko/Potrzebne|Moduł:Pudełko - Potrzebne |Wikibooks:Moduły/Pudełko/ParametryCechy|Moduł:Pudełko - Parametry Cechy |Wikibooks:Moduły/Ramka|Moduł:Ramka |Wikibooks:Moduły/Specjalne|Moduł:Specjalne |Wikibooks:Moduły/StronicowyParser|StronicowyParser |Wikibooks:Moduły/StronicowyParser/Moduł główny|StronicowyParser - Moduł główny |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy|StronicowyParser - AnalizaSpisuRzeczy |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I|StronicowyParser - AnalizaSpisuRzeczy - Tom I |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II|StronicowyParser - AnalizaSpisuRzeczy - Tom II |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III|StronicowyParser - AnalizaSpisuRzeczy - Tom III |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV|StronicowyParser - AnalizaSpisuRzeczy - Tom IV |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V|StronicowyParser - AnalizaSpisuRzeczy - Tom V |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI|StronicowyParser - AnalizaSpisuRzeczy - Tom VI |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII|StronicowyParser - AnalizaSpisuRzeczy - Tom VII |Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|StronicowyParser - GłównaFunkcjaZbieraniaDanychStron |Wikibooks:Moduły/StronicowyParser/Kategorie|StronicowyParser - Kategorie |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek|StronicowyParser - NumerLubNazwaArtykułówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek|StronicowyParser - NumerLubNazwaNagłówkówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerObiektu|StronicowyParser - NumerObiektu |Wikibooks:Moduły/StronicowyParser/NumeracjaObiektówStron|StronicowyParser - NumeracjaObiektówStron |Wikibooks:Moduły/StronicowyParser/Potrzebne|StronicowyParser - Potrzebne |Wikibooks:Moduły/StronicowyParser/Problemy|StronicowyParser - Problemy |Wikibooks:Moduły/StronicowyParser/Rozdziały|StronicowyParser - Rozdziały |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I|StronicowyParser - Rozdziały - Tom I |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II|StronicowyParser - Rozdziały - Tom II |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III|StronicowyParser - Rozdziały - Tom III |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV|StronicowyParser - Rozdziały - Tom IV |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V|StronicowyParser - Rozdziały - Tom V |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I|StronicowyParser - Rozdziały - Tom V - Część I |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część II|StronicowyParser - Rozdziały - Tom V - Część II |Wikibooks:Moduły/StronicowyParser/SpisTreści|StronicowyParser - SpisTreści |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I|StronicowyParser - SpisTreści - Tom I |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II|StronicowyParser - SpisTreści - Tom II |Wikibooks:Moduły/StronicowyParser/StronaSubst|StronicowyParser - StronaSubst |Wikibooks:Moduły/StronicowyParser/Tekst|StronicowyParser - Tekst |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron|StronicowyParser - ZbieranieDanychStron |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom I|StronicowyParser - ZbieranieDanychStron - Tom I |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom II|StronicowyParser - ZbieranieDanychStron - Tom II |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom III|StronicowyParser - ZbieranieDanychStron - Tom III |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom IV|StronicowyParser - ZbieranieDanychStron - Tom IV |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom V|StronicowyParser - ZbieranieDanychStron - Tom V |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI|StronicowyParser - ZbieranieDanychStron - Tom VI |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I|StronicowyParser - ZbieranieDanychStron - Tom VI - Część I |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część II|StronicowyParser - ZbieranieDanychStron - Tom VI - Część II |Wikibooks:Moduły/StronicowyParser/SzablonyTekstu|StronicowyParser - SzablonyTekstu |Wikibooks:Moduły/StronicowyParser/informacje|StronicowyParser - informacje |Wikibooks:Moduły/StronicowyParser/obiekty|StronicowyParser - obiekty |Wikibooks:Moduły/Szeregi|Moduł:Szeregi |Wikibooks:Moduły/Skrót|Moduł:Skrót |Wikibooks:Moduły/Strony|Moduł:Strony |Wikibooks:Moduły/Sekcja referencyjna|Moduł:Sekcja referencyjna |Wikibooks:Szablony/Ogólne|Szablony - Ogólne |Wikibooks:Szablony/Informacje|Szablony - Informacje |Wikibooks:Szablony/PrzypisStrona|PrzypisStrona |Wikibooks:Szablony/Podręcznikowe|Szablony - Podręcznikowe |Wikibooks:Szablony/Książkowe|Szablony - Książkowe |Wikibooks:Szablony/Tekst|Szablony - Tekst |Wikibooks:Szablony/Zawartość|Szablony - Zawartość |Wikibooks:Szablony/Nagłówki|Szablony - Nagłówki |Wikibooks:Szablony/Przekierowania|Szablony - Przekierowania |Wikibooks:Szablony/Języki|Szablony - Języki |Wikibooks:Szablony/Liczby|Szablony - Liczby |Wikibooks:Szablony/Kategorie|Szablony - Kategorie |Wikibooks:Szablony/Opisy|Szablony - Opisy |Wikibooks:Szablony/Znaczniki|Szablony - Znaczniki |Wikibooks:Szablony/Szablony opływania|Szablony opływania |Wikibooks:Szablony/Stronicowe|Szablony - Stronicowe |Wikibooks:Szablony/Kontenerowe|Szablony - Kontenerowe |Wikibooks:Szablony/Elastyczne|Szablony - Elastyczne |Wikibooks:Szablony/Infoboksy/Prolog|Szablony - Infoboksy - Prolog |Wikibooks:Szablony/Infoboksy/Tom I|Szablony - Infoboksy - Tom I |Wikibooks:Szablony/Infoboksy/Tom II|Szablony - Infoboksy - Tom II |Wikibooks:Szablony/Infoboksy/Tom III|Szablony - Infoboksy - Tom III |Wikibooks:Szablony/Infoboksy/Tom IV|Szablony - Infoboksy - Tom IV |Wikibooks:Szablony/Infoboksy/Tom V|Szablony - Infoboksy - Tom V |Wikibooks:Szablony/Infoboksy/Tom VI|Szablony - Infoboksy - Tom VI |Wikibooks:Szablony/Infoboksy/Komponenty|Szablony - Infoboksy - Komponenty |Wikibooks:Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe) |Wikibooks:Szablony/Porządkowe|Szablony - Porządkowe |Wikibooks:Szablony/Źródła artykułów|Szablony - Źródła artykułów |Wikibooks:Szablony/Linki|Szablony - Linki |Wikibooks:Szablony/Linki inteligentne|Szablony - Linki inteligentne |Wikibooks:Szablony/Do usunięcia|Szablony - Do usunięcia |Wikibooks:Szablony/Nawigacja|Szablony - Nawigacja |Wikibooks:Szablony/Media|Szablony - Media |Wikibooks:Szablony/Grafika|Szablony - Grafika |Wikibooks:Szablony/Licencjonowanie|Szablony - Licencjonowanie |Wikibooks:Szablony/Techniczne|Szablony - Techniczne |Wikibooks:Szablony/Wikipedysta|Szablony - Wikipedysta |Wikibooks:Szablony/Dyskusja Wikipedysty|Szablony - Dyskusja Wikipedysty |Wikibooks:Szablony/MediaWiki|Szablony - MediaWiki |Wikibooks:Szablony/Systemowe|Szablony - Systemowe |Pomoc:Spis treści/Szablony/Tom I|Szablony - Tom I |Pomoc:Spis treści/Szablony/Tom II|Szablony - Tom II |Pomoc:Spis treści/Szablony/Tom III|Szablony - Tom III |Pomoc:Spis treści/Szablony/Tom IV|Szablony - Tom IV |Pomoc:Spis treści/Administracja|Administracja |Wikibooks:Kwestie techniczne|Kwestie techniczne |Wikibooks:Wikipedyści potrzebujący pomocy|Wikipedyści potrzebujący pomocy |Wikibooks:Zgłoś błąd (ZB)|Zgłoś błąd (ZB) |Wikibooks:Lista Naruszeń Praw Autorskich (NPA)|Lista Naruszeń Praw Autorskich (NPA) |Wikibooks:Administratorzy|Administratorzy |Wikibooks:Prośby do administratorów|Prośby do administratorów |Wikibooks:Administratorzy interfejsu|Administratorzy interfejsu |Wikibooks:Prośby do administratorów interfejsu|Prośby do administratorów interfejsu |Wikibooks:Biurokraci|Biurokraci |Wikibooks:Boty|Boty |Wikibooks:Stewardzi|Stewardzi |Wikibooks:Użytkownicy|Użytkownicy |Wikibooks:Automatycznie zatwierdzeni użytkownicy|Automatycznie zatwierdzeni użytkownicy |Wikibooks:Zatwierdzeni użytkownicy|Zatwierdzeni użytkownicy |Wikibooks:Przyznawanie uprawnień|Przyznawanie uprawnień |Wikibooks:Nazwa użytkownika|Nazwa użytkownika |Wikibooks:Prośby o zmianę nazwy użytkownika|Prośby o zmianę nazwy użytkownika |Wikibooks:Uprawnieni do logowania się z zablokowanych adresów IP|Uprawnieni do logowania się z zablokowanych adresów IP |Wikibooks:GNU Free Documentation License|GNU Free Documentation License }}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon manualny (ręczny), nie automatyczny, bo ustawiony za pomocą {{Parametr|automat manualny|tak}}, wskazujący poprzedni i następny artykuł pomocy oraz ich stronę główną, czyli spis po {{LinkPomoc2|Spis treści}}.}}{{Kategoria|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}</noinclude> p50ws0hhhqj0l1ucx747j29u9rlj92e 556458 556456 2026-09-15T03:00:30Z Persino 2851 556458 wikitext text/x-wiki <includeonly>{{Układ autonawigacji|krok={{{1}}} |automat manualny=tak |spis treści=Pomoc:Spis treści |Pomoc:Spis treści|Pomoc - Spis treści |Pomoc:Spis treści/Wstęp|Wstęp |Wikibooks:Witamy nowicjuszy|Witamy nowicjuszy |Wikibooks:Zasady i wskazówki|Zasady i wskazówki |Wikibooks:Szybka pomoc|Szybka pomoc |Wikibooks:Czym jest Wikibooks|Czym jest Wikibooks? |Wikibooks:Różnice między Wikipedią i Wikibooks|Różnice między Wikipedią i Wikibooks |Wikibooks:Dlaczego warto rozpocząć współpracę|Dlaczego warto rozpocząć współpracę? |Wikibooks:Dlaczego używać wolnych podręczników|Dlaczego używać wolnych podręczników? |Wikibooks:Dlaczego nie pisać na Wikibooks|Dlaczego nie pisać na Wikibooks? |Wikibooks:Wikietykieta|Wikietykieta |Pomoc:Wikietykieta|Wikietykieta |Wikibooks:Neutralny punkt widzenia|Neutralny punkt widzenia |Pomoc:Żargon użytkowników|Żargon użytkowników |Wikibooks:Informacje prawne|Informacje prawne |Wikibooks:Prawa autorskie|Prawa autorskie |Pomoc:Spis treści/Edycja|Edycja |Wikibooks:Brudnopis|Brudnopis |Pomoc:Edycja kodu|Edycja kodu |Wikibooks:Import stron|Import stron |Wikibooks:Etapy rozwoju książek|Etapy rozwoju książek |Wikibooks:Ilustracja Wikibooks|Ilustracja Wikibooks |Pomoc:Jak edytować artykuły|Jak edytować artykuły? |Wikibooks:Nazewnictwo artykułów|Nazewnictwo artykułów |Pomoc:Podświetlanie składni|Podświetlanie składni |Pomoc:Problemy z polskimi znakami|Problemy z polskimi znakami |Pomoc:Quiz|Quiz |Pomoc:Tworzenie podręcznika|Tworzenie podręcznika |Wikibooks:Wandalizm|Wandalizm |Wikibooks:Podręczniki do druku|Podręczniki do druku |Pomoc:Tworzenie wersji do druku|Tworzenie wersji do druku |Pomoc:Tworzenie wersji PDF|Tworzenie wersji PDF |Pomoc:Tworzenie wersji PDF/javaLatex|Tworzenie wersji PDF/javaLatex |Pomoc:Książki|Książki |Pomoc:Spis treści/Wkład miesiąca|Wkład miesiąca |Wikibooks:Wkład miesiąca/Aktualne głosowanie|Aktualne głosowanie |Wikibooks:Wkład miesiąca/Wstęp|Wstęp |Wikibooks:Wkład miesiąca/Regulamin|Regulamin |Wikibooks:Wkład miesiąca/Nominacje|Nominacje |Pomoc:Spis treści/Komunikacja|Komunikacja |Wikibooks:Kanał IRC|Kanał IRC |Wikibooks:Kontakt|Kontakt |Wikibooks:Portal użytkowników|Portal użytkowników |Pomoc:Archiwizowanie strony dyskusji|Archiwizowanie strony dyskusji |Wikibooks:Przedstawicielstwo dyplomatyczne|Przedstawicielstwo dyplomatyczne |Pomoc:Spis treści/Korzystanie z Wikibooks|Korzystanie z Wikibooks |Wikibooks:Jak przeglądać Wikibooks|Jak przeglądać Wikibooks? |Wikibooks:Księgozbiór|Księgozbiór |Wikibooks:Księgozbiór/Wybrane|Księgozbiór - Wybrane |Wikibooks:Księgozbiór/Alfabetycznie|Księgozbiór - Alfabetycznie |Wikibooks:Księgozbiór/Tematycznie|Księgozbiór - Tematycznie |Kategoria:Kategorie podręcznikowe|Księgozbiór - Według kategorii |Wikibooks:Księgozbiór/Poziom|Księgozbiór - Poziom |Wikibooks:Księgozbiór/Status|Księgozbiór - Status |Portal:Nauki ścisłe i przyrodnicze|Portal - Nauki ścisłe i przyrodnicze |Portal:Informatyka|Portal - Informatyka |Portal:Nauki techniczne|Portal - Nauki techniczne |Portal:Nauki społeczne i humanistyczne|Portal - Nauki społeczne i humanistyczne |Portal:Sport i rozrywka|Portal - Sport i rozrywka |Portal:Hobby, poradniki i książki różne|Portal - Hobby, poradniki i książki różne |Wikibooks:Promocja|Promocja |Pomoc:Tryb ciemny|Tryb ciemny |Pomoc:Spis treści/Historia Wikibooks|Historia Wikibooks |Wikibooks:Historia Wikibooks|Historia Wikibooks |Wikibooks:Piąte urodziny|Piąte urodziny |Wikibooks:6. urodziny polskich Wikibooks|6. urodziny polskich Wikibooks |Wikibooks:Wikikalendarz 2009|Wikikalendarz 2009 |Wikibooks:Sprzątanie Wikibooks|Sprzątanie Wikibooks |Wikibooks:Sprzątanie Wikibooks/2009|Sprzątanie Wikibooks - 2009 |Wikibooks:Sprzątanie Wikibooks/2011|Sprzątanie Wikibooks - 2011 |Wikibooks:Statystyki|Statystyki |Pomoc:Spis treści/Technikalia|Technikalia |Wikibooks:Przestrzenie nazw|Przestrzenie nazw |Wikibooks:Poczekalnia|Poczekalnia |Wikibooks:Poczekalnia/naprawa|Poczekalnia - Naprawa |Wikibooks:Poczekalnia/prowokacje|Poczekalnia - Prowokacje |Wikibooks:Poczekalnia/artykuły|Poczekalnia - Artykuły |Wikibooks:Poczekalnia/kwestie techniczne|Poczekalnia - Kwestie techniczne |Wikibooks:Poczekalnia/Zgłoszenia|Poczekalnia - Zgłoszenia |Wikibooks:Poczekalnia/Załatwione|Poczekalnia - Załatwione |Wikibooks:VisualEditor|VisualEditor |Pomoc:Nowa skórka – wektor|Nowa skórka – wektor |Wikibooks:Skróty|Skróty |Pomoc:Spis treści/Strona główna|Strona główna |Pomoc:Spis treści/Wybrane książki|Wybrane książki |Wikibooks:Mechanizm MediaWiki|Mechanizm MediaWiki |Wikibooks:Szablony|Mechanizm MediaWiki - Szablony |Wikibooks:Moduły|Mechanizm MediaWiki - Moduły |Wikibooks:Moduły/Parametry|Moduł:Parametry |Wikibooks:Moduły/Parametry/Tom I|Moduł:Parametry - Tom I |Wikibooks:Moduły/Parametry/Tom II|Moduł:Parametry - Tom II |Wikibooks:Moduły/Parametry/Tom III|Moduł:Parametry - Tom III |Wikibooks:Moduły/Parametry/Tom IV|Moduł:Parametry - Tom IV |Wikibooks:Moduły/Parametry/Tom V|Moduł:Parametry - Tom V |Wikibooks:Moduły/Parametry/Tom VI|Moduł:Parametry - Tom VI |Wikibooks:Moduły/Parametry/Tom VII|Moduł:Parametry - Tom VII |Wikibooks:Moduły/Parametry/Tom VIII|Moduł:Parametry - Tom VIII |Wikibooks:Moduły/Parametry/Tom IX|Moduł:Parametry - Tom IX |Wikibooks:Moduły/Parametry/Tom X|Moduł:Parametry - Tom X |Wikibooks:Moduły/Parametry/Tom XI|Moduł:Parametry - Tom XI |Wikibooks:Moduły/Parametry/Tom XII|Moduł:Parametry - Tom XII |Wikibooks:Moduły/Parametry/Tom XIII|Moduł:Parametry - Tom XIII |Wikibooks:Moduły/Parametry/Tom XIV|Moduł:Parametry - Tom XIV |Wikibooks:Moduły/Parametry/Tom XV|Moduł:Parametry - Tom XV |Wikibooks:Moduły/Parametry/Tom XVI|Moduł:Parametry - Tom XVI |Wikibooks:Moduły/Parametry/Tom XVII|Moduł:Parametry - Tom XVII |Wikibooks:Moduły/Parametry/Tom XVIII|Moduł:Parametry - Tom XVIII |Wikibooks:Moduły/Parametry/Tom XIX|Moduł:Parametry - Tom XIX |Wikibooks:Moduły/Parametry/Tom XX|Moduł:Parametry - Tom XX |Wikibooks:Moduły/Html|Moduł:Html |Wikibooks:Moduły/Książkowe|Moduł:Książkowe |Wikibooks:Moduły/Nazwy|Moduł:Nazwy |Wikibooks:Moduły/Nazwy/Tom I|Moduł:Nazwy - Tom I |Wikibooks:Moduły/Nazwy/Tom II|Moduł:Nazwy - Tom II |Wikibooks:Moduły/Nazwy/Tom III|Moduł:Nazwy - Tom III |Wikibooks:Moduły/Nazwy/Tom IV|Moduł:Nazwy - Tom IV |Wikibooks:Moduły/Nazwy/Np|Moduł:Nazwy - Np |Wikibooks:Moduły/Pudełko|Moduł:Pudełko |Wikibooks:Moduły/Pudełko/Tom I|Moduł:Pudełko - Tom I |Wikibooks:Moduły/Pudełko/Tom II|Moduł:Pudełko - Tom II |Wikibooks:Moduły/Pudełko/Tom III|Moduł:Pudełko - Tom III |Wikibooks:Moduły/Pudełko/Tom IV|Moduł:Pudełko - Tom IV |Wikibooks:Moduły/Pudełko/Tom V|Moduł:Pudełko - Tom V |Wikibooks:Moduły/Pudełko/Pomocne|Moduł:Pudełko - Pomocne |Wikibooks:Moduły/Pudełko/Potrzebne|Moduł:Pudełko - Potrzebne |Wikibooks:Moduły/Pudełko/ParametryCechy|Moduł:Pudełko - Parametry Cechy |Wikibooks:Moduły/Ramka|Moduł:Ramka |Wikibooks:Moduły/Specjalne|Moduł:Specjalne |Wikibooks:Moduły/StronicowyParser|StronicowyParser |Wikibooks:Moduły/StronicowyParser/Moduł główny|StronicowyParser - Moduł główny |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy|StronicowyParser - AnalizaSpisuRzeczy |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I|StronicowyParser - AnalizaSpisuRzeczy - Tom I |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II|StronicowyParser - AnalizaSpisuRzeczy - Tom II |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III|StronicowyParser - AnalizaSpisuRzeczy - Tom III |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV|StronicowyParser - AnalizaSpisuRzeczy - Tom IV |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V|StronicowyParser - AnalizaSpisuRzeczy - Tom V |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI|StronicowyParser - AnalizaSpisuRzeczy - Tom VI |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII|StronicowyParser - AnalizaSpisuRzeczy - Tom VII |Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|StronicowyParser - GłównaFunkcjaZbieraniaDanychStron |Wikibooks:Moduły/StronicowyParser/Kategorie|StronicowyParser - Kategorie |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek|StronicowyParser - NumerLubNazwaArtykułówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek|StronicowyParser - NumerLubNazwaNagłówkówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerObiektu|StronicowyParser - NumerObiektu |Wikibooks:Moduły/StronicowyParser/NumeracjaObiektówStron|StronicowyParser - NumeracjaObiektówStron |Wikibooks:Moduły/StronicowyParser/Potrzebne|StronicowyParser - Potrzebne |Wikibooks:Moduły/StronicowyParser/Problemy|StronicowyParser - Problemy |Wikibooks:Moduły/StronicowyParser/Rozdziały|StronicowyParser - Rozdziały |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I|StronicowyParser - Rozdziały - Tom I |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II|StronicowyParser - Rozdziały - Tom II |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III|StronicowyParser - Rozdziały - Tom III |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV|StronicowyParser - Rozdziały - Tom IV |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V|StronicowyParser - Rozdziały - Tom V |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I|StronicowyParser - Rozdziały - Tom V - Część I |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część II|StronicowyParser - Rozdziały - Tom V - Część II |Wikibooks:Moduły/StronicowyParser/SpisTreści|StronicowyParser - SpisTreści |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I|StronicowyParser - SpisTreści - Tom I |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II|StronicowyParser - SpisTreści - Tom II |Wikibooks:Moduły/StronicowyParser/StronaSubst|StronicowyParser - StronaSubst |Wikibooks:Moduły/StronicowyParser/Tekst|StronicowyParser - Tekst |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron|StronicowyParser - ZbieranieDanychStron |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom I|StronicowyParser - ZbieranieDanychStron - Tom I |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom II|StronicowyParser - ZbieranieDanychStron - Tom II |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom III|StronicowyParser - ZbieranieDanychStron - Tom III |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom IV|StronicowyParser - ZbieranieDanychStron - Tom IV |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom V|StronicowyParser - ZbieranieDanychStron - Tom V |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI|StronicowyParser - ZbieranieDanychStron - Tom VI |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I|StronicowyParser - ZbieranieDanychStron - Tom VI - Część I |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część II|StronicowyParser - ZbieranieDanychStron - Tom VI - Część II |Wikibooks:Moduły/StronicowyParser/SzablonyTekstu|StronicowyParser - SzablonyTekstu |Wikibooks:Moduły/StronicowyParser/informacje|StronicowyParser - informacje |Wikibooks:Moduły/StronicowyParser/obiekty|StronicowyParser - obiekty |Wikibooks:Moduły/Szeregi|Moduł:Szeregi |Wikibooks:Moduły/Skrót|Moduł:Skrót |Wikibooks:Moduły/Strony|Moduł:Strony |Wikibooks:Moduły/Sekcja referencyjna|Moduł:Sekcja referencyjna |Wikibooks:Szablony/Ogólne|Szablony - Ogólne |Wikibooks:Szablony/Informacje|Szablony - Informacje |Wikibooks:Szablony/PrzypisStrona|PrzypisStrona |Wikibooks:Szablony/Podręcznikowe|Szablony - Podręcznikowe |Wikibooks:Szablony/Książkowe|Szablony - Książkowe |Wikibooks:Szablony/Tekst|Szablony - Tekst |Wikibooks:Szablony/Zawartość|Szablony - Zawartość |Wikibooks:Szablony/Nagłówki|Szablony - Nagłówki |Wikibooks:Szablony/Przekierowania|Szablony - Przekierowania |Wikibooks:Szablony/Języki|Szablony - Języki |Wikibooks:Szablony/Liczby|Szablony - Liczby |Wikibooks:Szablony/Kategorie|Szablony - Kategorie |Wikibooks:Szablony/Opisy|Szablony - Opisy |Wikibooks:Szablony/Znaczniki|Szablony - Znaczniki |Wikibooks:Szablony/Szablony opływania|Szablony opływania |Wikibooks:Szablony/Stronicowe|Szablony - Stronicowe |Wikibooks:Szablony/Kontenerowe|Szablony - Kontenerowe |Wikibooks:Szablony/Elastyczne|Szablony - Elastyczne |Wikibooks:Szablony/Infoboksy/Prolog|Szablony - Infoboksy - Prolog |Wikibooks:Szablony/Infoboksy/Tom I|Szablony - Infoboksy - Tom I |Wikibooks:Szablony/Infoboksy/Tom II|Szablony - Infoboksy - Tom II |Wikibooks:Szablony/Infoboksy/Tom III|Szablony - Infoboksy - Tom III |Wikibooks:Szablony/Infoboksy/Tom IV|Szablony - Infoboksy - Tom IV |Wikibooks:Szablony/Infoboksy/Tom V|Szablony - Infoboksy - Tom V |Wikibooks:Szablony/Infoboksy/Tom VI|Szablony - Infoboksy - Tom VI |Wikibooks:Szablony/Infoboksy/Komponenty|Szablony - Infoboksy - Komponenty |Wikibooks:Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe) |Wikibooks:Szablony/Porządkowe|Szablony - Porządkowe |Wikibooks:Szablony/Źródła artykułów|Szablony - Źródła artykułów |Wikibooks:Szablony/Linki|Szablony - Linki |Wikibooks:Szablony/Linki inteligentne|Szablony - Linki inteligentne |Wikibooks:Szablony/Do usunięcia|Szablony - Do usunięcia |Wikibooks:Szablony/Nawigacja|Szablony - Nawigacja |Wikibooks:Szablony/Media|Szablony - Media |Wikibooks:Szablony/Grafika|Szablony - Grafika |Wikibooks:Szablony/Licencjonowanie|Szablony - Licencjonowanie |Wikibooks:Szablony/Techniczne|Szablony - Techniczne |Wikibooks:Szablony/Wikipedysta|Szablony - Wikipedysta |Wikibooks:Szablony/Dyskusja Wikipedysty|Szablony - Dyskusja Wikipedysty |Wikibooks:Szablony/MediaWiki|Szablony - MediaWiki |Wikibooks:Szablony/Systemowe|Szablony - Systemowe |Pomoc:Spis treści/Szablony/Tom I|Szablony - Tom I |Pomoc:Spis treści/Szablony/Tom II|Szablony - Tom II |Pomoc:Spis treści/Szablony/Tom III|Szablony - Tom III |Pomoc:Spis treści/Szablony/Tom IV|Szablony - Tom IV |Pomoc:Spis treści/Administracja|Administracja |Wikibooks:Kwestie techniczne|Kwestie techniczne |Wikibooks:Wikipedyści potrzebujący pomocy|Wikipedyści potrzebujący pomocy |Wikibooks:Zgłoś błąd (ZB)|Zgłoś błąd (ZB) |Wikibooks:Lista Naruszeń Praw Autorskich (NPA)|Lista Naruszeń Praw Autorskich (NPA) |Wikibooks:Administratorzy|Administratorzy |Wikibooks:Prośby do administratorów|Prośby do administratorów |Wikibooks:Administratorzy interfejsu|Administratorzy interfejsu |Wikibooks:Prośby do administratorów interfejsu|Prośby do administratorów interfejsu |Wikibooks:Biurokraci|Biurokraci |Wikibooks:Boty|Boty |Wikibooks:Stewardzi|Stewardzi |Wikibooks:Użytkownicy|Użytkownicy |Wikibooks:Automatycznie zatwierdzeni użytkownicy|Automatycznie zatwierdzeni użytkownicy |Wikibooks:Zatwierdzeni użytkownicy|Zatwierdzeni użytkownicy |Wikibooks:Przyznawanie uprawnień|Przyznawanie uprawnień |Wikibooks:Nazwa użytkownika|Nazwa użytkownika |Wikibooks:Prośby o zmianę nazwy użytkownika|Prośby o zmianę nazwy użytkownika |Wikibooks:Uprawnieni do logowania się z zablokowanych adresów IP|Uprawnieni do logowania się z zablokowanych adresów IP |Wikibooks:GNU Free Documentation License|GNU Free Documentation License }}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon manualny (ręczny), nie automatyczny, bo ustawiony za pomocą {{Parametr|automat manualny|tak}}, wskazujący poprzedni i następny artykuł pomocy oraz ich stronę główną, czyli spis po {{LinkPomoc2|Spis treści}}.}}{{Kategoria|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}</noinclude> d597qgbqsya7e2rceuaxrde44duq828 556459 556458 2026-09-15T03:02:43Z Persino 2851 556459 wikitext text/x-wiki <includeonly>{{Układ autonawigacji|krok={{{1}}} |automat manualny=tak |spis treści=Pomoc:Spis treści |Pomoc:Spis treści|Pomoc - Spis treści |Pomoc:Spis treści/Wstęp|Wstęp |Wikibooks:Witamy nowicjuszy|Witamy nowicjuszy |Wikibooks:Zasady i wskazówki|Zasady i wskazówki |Wikibooks:Szybka pomoc|Szybka pomoc |Wikibooks:Czym jest Wikibooks|Czym jest Wikibooks? |Wikibooks:Różnice między Wikipedią i Wikibooks|Różnice między Wikipedią i Wikibooks |Wikibooks:Dlaczego warto rozpocząć współpracę|Dlaczego warto rozpocząć współpracę? |Wikibooks:Dlaczego używać wolnych podręczników|Dlaczego używać wolnych podręczników? |Wikibooks:Dlaczego nie pisać na Wikibooks|Dlaczego nie pisać na Wikibooks? |Wikibooks:Wikietykieta|Wikietykieta |Pomoc:Wikietykieta|Wikietykieta |Wikibooks:Neutralny punkt widzenia|Neutralny punkt widzenia |Pomoc:Żargon użytkowników|Żargon użytkowników |Wikibooks:Informacje prawne|Informacje prawne |Wikibooks:Prawa autorskie|Prawa autorskie |Pomoc:Spis treści/Edycja|Edycja |Wikibooks:Brudnopis|Brudnopis |Pomoc:Edycja kodu|Edycja kodu |Wikibooks:Import stron|Import stron |Wikibooks:Etapy rozwoju książek|Etapy rozwoju książek |Wikibooks:Ilustracja Wikibooks|Ilustracja Wikibooks |Pomoc:Jak edytować artykuły|Jak edytować artykuły? |Wikibooks:Nazewnictwo artykułów|Nazewnictwo artykułów |Pomoc:Podświetlanie składni|Podświetlanie składni |Pomoc:Problemy z polskimi znakami|Problemy z polskimi znakami |Pomoc:Quiz|Quiz |Pomoc:Tworzenie podręcznika|Tworzenie podręcznika |Wikibooks:Wandalizm|Wandalizm |Wikibooks:Podręczniki do druku|Podręczniki do druku |Pomoc:Tworzenie wersji do druku|Tworzenie wersji do druku |Pomoc:Tworzenie wersji PDF|Tworzenie wersji PDF |Pomoc:Tworzenie wersji PDF/javaLatex|Tworzenie wersji PDF/javaLatex |Pomoc:Książki|Książki |Pomoc:Spis treści/Wkład miesiąca|Wkład miesiąca |Wikibooks:Wkład miesiąca/Aktualne głosowanie|Aktualne głosowanie |Wikibooks:Wkład miesiąca/Wstęp|Wstęp |Wikibooks:Wkład miesiąca/Regulamin|Regulamin |Wikibooks:Wkład miesiąca/Nominacje|Nominacje |Pomoc:Spis treści/Komunikacja|Komunikacja |Wikibooks:Kanał IRC|Kanał IRC |Wikibooks:Kontakt|Kontakt |Wikibooks:Portal użytkowników|Portal użytkowników |Pomoc:Archiwizowanie strony dyskusji|Archiwizowanie strony dyskusji |Wikibooks:Przedstawicielstwo dyplomatyczne|Przedstawicielstwo dyplomatyczne |Pomoc:Spis treści/Korzystanie z Wikibooks|Korzystanie z Wikibooks |Wikibooks:Jak przeglądać Wikibooks|Jak przeglądać Wikibooks? |Wikibooks:Księgozbiór|Księgozbiór |Wikibooks:Księgozbiór/Wybrane|Księgozbiór - Wybrane |Wikibooks:Księgozbiór/Alfabetycznie|Księgozbiór - Alfabetycznie |Wikibooks:Księgozbiór/Tematycznie|Księgozbiór - Tematycznie |Kategoria:Kategorie podręcznikowe|Księgozbiór - Według kategorii |Wikibooks:Księgozbiór/Poziom|Księgozbiór - Według poziomu |Wikibooks:Księgozbiór/Status|Księgozbiór - Według rozwoju |Portal:Nauki ścisłe i przyrodnicze|Portal - Nauki ścisłe i przyrodnicze |Portal:Informatyka|Portal - Informatyka |Portal:Nauki techniczne|Portal - Nauki techniczne |Portal:Nauki społeczne i humanistyczne|Portal - Nauki społeczne i humanistyczne |Portal:Sport i rozrywka|Portal - Sport i rozrywka |Portal:Hobby, poradniki i książki różne|Portal - Hobby, poradniki i książki różne |Wikibooks:Promocja|Promocja |Pomoc:Tryb ciemny|Tryb ciemny |Pomoc:Spis treści/Historia Wikibooks|Historia Wikibooks |Wikibooks:Historia Wikibooks|Historia Wikibooks |Wikibooks:Piąte urodziny|Piąte urodziny |Wikibooks:6. urodziny polskich Wikibooks|6. urodziny polskich Wikibooks |Wikibooks:Wikikalendarz 2009|Wikikalendarz 2009 |Wikibooks:Sprzątanie Wikibooks|Sprzątanie Wikibooks |Wikibooks:Sprzątanie Wikibooks/2009|Sprzątanie Wikibooks - 2009 |Wikibooks:Sprzątanie Wikibooks/2011|Sprzątanie Wikibooks - 2011 |Wikibooks:Statystyki|Statystyki |Pomoc:Spis treści/Technikalia|Technikalia |Wikibooks:Przestrzenie nazw|Przestrzenie nazw |Wikibooks:Poczekalnia|Poczekalnia |Wikibooks:Poczekalnia/naprawa|Poczekalnia - Naprawa |Wikibooks:Poczekalnia/prowokacje|Poczekalnia - Prowokacje |Wikibooks:Poczekalnia/artykuły|Poczekalnia - Artykuły |Wikibooks:Poczekalnia/kwestie techniczne|Poczekalnia - Kwestie techniczne |Wikibooks:Poczekalnia/Zgłoszenia|Poczekalnia - Zgłoszenia |Wikibooks:Poczekalnia/Załatwione|Poczekalnia - Załatwione |Wikibooks:VisualEditor|VisualEditor |Pomoc:Nowa skórka – wektor|Nowa skórka – wektor |Wikibooks:Skróty|Skróty |Pomoc:Spis treści/Strona główna|Strona główna |Pomoc:Spis treści/Wybrane książki|Wybrane książki |Wikibooks:Mechanizm MediaWiki|Mechanizm MediaWiki |Wikibooks:Szablony|Mechanizm MediaWiki - Szablony |Wikibooks:Moduły|Mechanizm MediaWiki - Moduły |Wikibooks:Moduły/Parametry|Moduł:Parametry |Wikibooks:Moduły/Parametry/Tom I|Moduł:Parametry - Tom I |Wikibooks:Moduły/Parametry/Tom II|Moduł:Parametry - Tom II |Wikibooks:Moduły/Parametry/Tom III|Moduł:Parametry - Tom III |Wikibooks:Moduły/Parametry/Tom IV|Moduł:Parametry - Tom IV |Wikibooks:Moduły/Parametry/Tom V|Moduł:Parametry - Tom V |Wikibooks:Moduły/Parametry/Tom VI|Moduł:Parametry - Tom VI |Wikibooks:Moduły/Parametry/Tom VII|Moduł:Parametry - Tom VII |Wikibooks:Moduły/Parametry/Tom VIII|Moduł:Parametry - Tom VIII |Wikibooks:Moduły/Parametry/Tom IX|Moduł:Parametry - Tom IX |Wikibooks:Moduły/Parametry/Tom X|Moduł:Parametry - Tom X |Wikibooks:Moduły/Parametry/Tom XI|Moduł:Parametry - Tom XI |Wikibooks:Moduły/Parametry/Tom XII|Moduł:Parametry - Tom XII |Wikibooks:Moduły/Parametry/Tom XIII|Moduł:Parametry - Tom XIII |Wikibooks:Moduły/Parametry/Tom XIV|Moduł:Parametry - Tom XIV |Wikibooks:Moduły/Parametry/Tom XV|Moduł:Parametry - Tom XV |Wikibooks:Moduły/Parametry/Tom XVI|Moduł:Parametry - Tom XVI |Wikibooks:Moduły/Parametry/Tom XVII|Moduł:Parametry - Tom XVII |Wikibooks:Moduły/Parametry/Tom XVIII|Moduł:Parametry - Tom XVIII |Wikibooks:Moduły/Parametry/Tom XIX|Moduł:Parametry - Tom XIX |Wikibooks:Moduły/Parametry/Tom XX|Moduł:Parametry - Tom XX |Wikibooks:Moduły/Html|Moduł:Html |Wikibooks:Moduły/Książkowe|Moduł:Książkowe |Wikibooks:Moduły/Nazwy|Moduł:Nazwy |Wikibooks:Moduły/Nazwy/Tom I|Moduł:Nazwy - Tom I |Wikibooks:Moduły/Nazwy/Tom II|Moduł:Nazwy - Tom II |Wikibooks:Moduły/Nazwy/Tom III|Moduł:Nazwy - Tom III |Wikibooks:Moduły/Nazwy/Tom IV|Moduł:Nazwy - Tom IV |Wikibooks:Moduły/Nazwy/Np|Moduł:Nazwy - Np |Wikibooks:Moduły/Pudełko|Moduł:Pudełko |Wikibooks:Moduły/Pudełko/Tom I|Moduł:Pudełko - Tom I |Wikibooks:Moduły/Pudełko/Tom II|Moduł:Pudełko - Tom II |Wikibooks:Moduły/Pudełko/Tom III|Moduł:Pudełko - Tom III |Wikibooks:Moduły/Pudełko/Tom IV|Moduł:Pudełko - Tom IV |Wikibooks:Moduły/Pudełko/Tom V|Moduł:Pudełko - Tom V |Wikibooks:Moduły/Pudełko/Pomocne|Moduł:Pudełko - Pomocne |Wikibooks:Moduły/Pudełko/Potrzebne|Moduł:Pudełko - Potrzebne |Wikibooks:Moduły/Pudełko/ParametryCechy|Moduł:Pudełko - Parametry Cechy |Wikibooks:Moduły/Ramka|Moduł:Ramka |Wikibooks:Moduły/Specjalne|Moduł:Specjalne |Wikibooks:Moduły/StronicowyParser|StronicowyParser |Wikibooks:Moduły/StronicowyParser/Moduł główny|StronicowyParser - Moduł główny |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy|StronicowyParser - AnalizaSpisuRzeczy |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I|StronicowyParser - AnalizaSpisuRzeczy - Tom I |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II|StronicowyParser - AnalizaSpisuRzeczy - Tom II |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III|StronicowyParser - AnalizaSpisuRzeczy - Tom III |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV|StronicowyParser - AnalizaSpisuRzeczy - Tom IV |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V|StronicowyParser - AnalizaSpisuRzeczy - Tom V |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI|StronicowyParser - AnalizaSpisuRzeczy - Tom VI |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII|StronicowyParser - AnalizaSpisuRzeczy - Tom VII |Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|StronicowyParser - GłównaFunkcjaZbieraniaDanychStron |Wikibooks:Moduły/StronicowyParser/Kategorie|StronicowyParser - Kategorie |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek|StronicowyParser - NumerLubNazwaArtykułówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek|StronicowyParser - NumerLubNazwaNagłówkówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerObiektu|StronicowyParser - NumerObiektu |Wikibooks:Moduły/StronicowyParser/NumeracjaObiektówStron|StronicowyParser - NumeracjaObiektówStron |Wikibooks:Moduły/StronicowyParser/Potrzebne|StronicowyParser - Potrzebne |Wikibooks:Moduły/StronicowyParser/Problemy|StronicowyParser - Problemy |Wikibooks:Moduły/StronicowyParser/Rozdziały|StronicowyParser - Rozdziały |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I|StronicowyParser - Rozdziały - Tom I |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II|StronicowyParser - Rozdziały - Tom II |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III|StronicowyParser - Rozdziały - Tom III |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV|StronicowyParser - Rozdziały - Tom IV |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V|StronicowyParser - Rozdziały - Tom V |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I|StronicowyParser - Rozdziały - Tom V - Część I |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część II|StronicowyParser - Rozdziały - Tom V - Część II |Wikibooks:Moduły/StronicowyParser/SpisTreści|StronicowyParser - SpisTreści |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I|StronicowyParser - SpisTreści - Tom I |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II|StronicowyParser - SpisTreści - Tom II |Wikibooks:Moduły/StronicowyParser/StronaSubst|StronicowyParser - StronaSubst |Wikibooks:Moduły/StronicowyParser/Tekst|StronicowyParser - Tekst |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron|StronicowyParser - ZbieranieDanychStron |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom I|StronicowyParser - ZbieranieDanychStron - Tom I |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom II|StronicowyParser - ZbieranieDanychStron - Tom II |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom III|StronicowyParser - ZbieranieDanychStron - Tom III |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom IV|StronicowyParser - ZbieranieDanychStron - Tom IV |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom V|StronicowyParser - ZbieranieDanychStron - Tom V |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI|StronicowyParser - ZbieranieDanychStron - Tom VI |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I|StronicowyParser - ZbieranieDanychStron - Tom VI - Część I |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część II|StronicowyParser - ZbieranieDanychStron - Tom VI - Część II |Wikibooks:Moduły/StronicowyParser/SzablonyTekstu|StronicowyParser - SzablonyTekstu |Wikibooks:Moduły/StronicowyParser/informacje|StronicowyParser - informacje |Wikibooks:Moduły/StronicowyParser/obiekty|StronicowyParser - obiekty |Wikibooks:Moduły/Szeregi|Moduł:Szeregi |Wikibooks:Moduły/Skrót|Moduł:Skrót |Wikibooks:Moduły/Strony|Moduł:Strony |Wikibooks:Moduły/Sekcja referencyjna|Moduł:Sekcja referencyjna |Wikibooks:Szablony/Ogólne|Szablony - Ogólne |Wikibooks:Szablony/Informacje|Szablony - Informacje |Wikibooks:Szablony/PrzypisStrona|PrzypisStrona |Wikibooks:Szablony/Podręcznikowe|Szablony - Podręcznikowe |Wikibooks:Szablony/Książkowe|Szablony - Książkowe |Wikibooks:Szablony/Tekst|Szablony - Tekst |Wikibooks:Szablony/Zawartość|Szablony - Zawartość |Wikibooks:Szablony/Nagłówki|Szablony - Nagłówki |Wikibooks:Szablony/Przekierowania|Szablony - Przekierowania |Wikibooks:Szablony/Języki|Szablony - Języki |Wikibooks:Szablony/Liczby|Szablony - Liczby |Wikibooks:Szablony/Kategorie|Szablony - Kategorie |Wikibooks:Szablony/Opisy|Szablony - Opisy |Wikibooks:Szablony/Znaczniki|Szablony - Znaczniki |Wikibooks:Szablony/Szablony opływania|Szablony opływania |Wikibooks:Szablony/Stronicowe|Szablony - Stronicowe |Wikibooks:Szablony/Kontenerowe|Szablony - Kontenerowe |Wikibooks:Szablony/Elastyczne|Szablony - Elastyczne |Wikibooks:Szablony/Infoboksy/Prolog|Szablony - Infoboksy - Prolog |Wikibooks:Szablony/Infoboksy/Tom I|Szablony - Infoboksy - Tom I |Wikibooks:Szablony/Infoboksy/Tom II|Szablony - Infoboksy - Tom II |Wikibooks:Szablony/Infoboksy/Tom III|Szablony - Infoboksy - Tom III |Wikibooks:Szablony/Infoboksy/Tom IV|Szablony - Infoboksy - Tom IV |Wikibooks:Szablony/Infoboksy/Tom V|Szablony - Infoboksy - Tom V |Wikibooks:Szablony/Infoboksy/Tom VI|Szablony - Infoboksy - Tom VI |Wikibooks:Szablony/Infoboksy/Komponenty|Szablony - Infoboksy - Komponenty |Wikibooks:Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe) |Wikibooks:Szablony/Porządkowe|Szablony - Porządkowe |Wikibooks:Szablony/Źródła artykułów|Szablony - Źródła artykułów |Wikibooks:Szablony/Linki|Szablony - Linki |Wikibooks:Szablony/Linki inteligentne|Szablony - Linki inteligentne |Wikibooks:Szablony/Do usunięcia|Szablony - Do usunięcia |Wikibooks:Szablony/Nawigacja|Szablony - Nawigacja |Wikibooks:Szablony/Media|Szablony - Media |Wikibooks:Szablony/Grafika|Szablony - Grafika |Wikibooks:Szablony/Licencjonowanie|Szablony - Licencjonowanie |Wikibooks:Szablony/Techniczne|Szablony - Techniczne |Wikibooks:Szablony/Wikipedysta|Szablony - Wikipedysta |Wikibooks:Szablony/Dyskusja Wikipedysty|Szablony - Dyskusja Wikipedysty |Wikibooks:Szablony/MediaWiki|Szablony - MediaWiki |Wikibooks:Szablony/Systemowe|Szablony - Systemowe |Pomoc:Spis treści/Szablony/Tom I|Szablony - Tom I |Pomoc:Spis treści/Szablony/Tom II|Szablony - Tom II |Pomoc:Spis treści/Szablony/Tom III|Szablony - Tom III |Pomoc:Spis treści/Szablony/Tom IV|Szablony - Tom IV |Pomoc:Spis treści/Administracja|Administracja |Wikibooks:Kwestie techniczne|Kwestie techniczne |Wikibooks:Wikipedyści potrzebujący pomocy|Wikipedyści potrzebujący pomocy |Wikibooks:Zgłoś błąd (ZB)|Zgłoś błąd (ZB) |Wikibooks:Lista Naruszeń Praw Autorskich (NPA)|Lista Naruszeń Praw Autorskich (NPA) |Wikibooks:Administratorzy|Administratorzy |Wikibooks:Prośby do administratorów|Prośby do administratorów |Wikibooks:Administratorzy interfejsu|Administratorzy interfejsu |Wikibooks:Prośby do administratorów interfejsu|Prośby do administratorów interfejsu |Wikibooks:Biurokraci|Biurokraci |Wikibooks:Boty|Boty |Wikibooks:Stewardzi|Stewardzi |Wikibooks:Użytkownicy|Użytkownicy |Wikibooks:Automatycznie zatwierdzeni użytkownicy|Automatycznie zatwierdzeni użytkownicy |Wikibooks:Zatwierdzeni użytkownicy|Zatwierdzeni użytkownicy |Wikibooks:Przyznawanie uprawnień|Przyznawanie uprawnień |Wikibooks:Nazwa użytkownika|Nazwa użytkownika |Wikibooks:Prośby o zmianę nazwy użytkownika|Prośby o zmianę nazwy użytkownika |Wikibooks:Uprawnieni do logowania się z zablokowanych adresów IP|Uprawnieni do logowania się z zablokowanych adresów IP |Wikibooks:GNU Free Documentation License|GNU Free Documentation License }}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon manualny (ręczny), nie automatyczny, bo ustawiony za pomocą {{Parametr|automat manualny|tak}}, wskazujący poprzedni i następny artykuł pomocy oraz ich stronę główną, czyli spis po {{LinkPomoc2|Spis treści}}.}}{{Kategoria|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}</noinclude> oclt5535ifppgq7u60sb274ebfdgnmm Moduł:Ramka/dane 828 61466 556497 510433 2026-09-15T06:27:05Z Persino 2851 556497 Scribunto text/plain local p={}; p.tablica_warunkowe_i_parametr={ ["__!__"]={"|","{{!}}",}, ["__!!__"]={"||","{{!!}}",}, ["__(__"]={"{","{{(}}",}, ["__((__"]={"{{","{{((}}",}, ["__(((__"]={"{{{","{{(((}}",}, ["__)__"]={"}","{{)}}",}, ["__))__"]={"}}","{{))}}",}, ["__)))__"]={"}}}","{{)))}}",}, ["__!(__"]={"[","{{!(}}",}, ["__!((__"]={"[[","{{!((}}",}, ["__)!__"]={"]","{{)!}}",}, ["__))!__"]={"]]","{{))!}}",}, }; p.bez_parametrowa_tablica={ ["Nazwa"]=true, ["bez argumentów rodzica"]=true, ["nazwa szablonu rodzica"]=true, ["bez argumentów nienazwanych rodzica"]=true, ["potomek"]=true, ["nie potomek"]=true, ["bez argumentów szablonu"]=true, --["bez dodatkowych sprawdzeń"]=true, ["parametry rodzica"]=true, ["zmienna z parametrami rodzica"]=true, ["zmienna z argumentami ramki"]=true, ["zmienna z nazwą szablonu rodzica"]=true, ["parametry funkcji modułu pudełek"]=true, ["parametry podstawowe funkcji modułu pudełek"]=true, ["usuń z parametrów ramki"]=true, }; p.bez_parametrowa_pakowania_zmiennych_rodzica={ ["tabelka_parametrow_rodzica"]=true, } return p; bbtaf1slhm4m7437o29batyiiyjlz71 556498 556497 2026-09-15T06:31:06Z Persino 2851 Anulowano wersję [[Special:Diff/556497|556497]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 556498 Scribunto text/plain local p={}; p.tablica_warunkowe_i_parametr={ ["__!__"]={"|","{{!}}",}, ["__!!__"]={"||","{{!!}}",}, ["__(__"]={"{","{{(}}",}, ["__((__"]={"{{","{{((}}",}, ["__(((__"]={"{{{","{{(((}}",}, ["__)__"]={"}","{{)}}",}, ["__))__"]={"}}","{{))}}",}, ["__)))__"]={"}}}","{{)))}}",}, ["__!(__"]={"[","{{!(}}",}, ["__!((__"]={"[[","{{!((}}",}, ["__)!__"]={"]","{{)!}}",}, ["__))!__"]={"]]","{{))!}}",}, }; p.bez_parametrowa_tablica={ ["Nazwa"]=true, ["bez argumentów rodzica"]=true, ["nazwa szablonu rodzica"]=true, ["bez argumentów nienazwanych rodzica"]=true, ["potomek"]=true, ["nie potomek"]=true, ["bez argumentów szablonu"]=true, --["bez dodatkowych sprawdzeń"]=true, ["parametry rodzica"]=true, ["zmienna z parametrami rodzica"]=true, ["zmienna z argumentami ramki"]=true, ["zmienna z nazwą szablonu rodzica"]=true, ["parametry funkcji modułu pudełek"]=true, ["parametry podstawowe funkcji modułu pudełek"]=true, ["usuń z parametrów ramki"]=true, }; return p; 5e8of6jwpa7fadt6kly95ek1pz14wob Szablon:Pszcz Pasieka24 10 62064 556483 527886 2026-09-15T05:11:57Z Persino 2851 556483 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://pasieka24.pl/index.php/pl-pl/pasieka-czasopismo-dla-pszczelarzy|czasopismo=Czasopismo Pasieka|issn=1730-7619}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude> akfijliyp8t9igl7pmy45ponv21rw93 556490 556483 2026-09-15T06:00:00Z Persino 2851 556490 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://pasieka24.pl/index.php/pl-pl/pasieka-czasopismo-dla-pszczelarzy|czasopismo=Czasopismo Pasieka|issn=1730-7619|zmienna z nazwą szablonu rodzica=tak}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude> 68gwtynwtx0nsce1ekfowldop6jd20u 556512 556490 2026-09-15T07:30:03Z Persino 2851 556512 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://pasieka24.pl/index.php/pl-pl/pasieka-czasopismo-dla-pszczelarzy|czasopismo=Czasopismo Pasieka|issn=1730-7619}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude> akfijliyp8t9igl7pmy45ponv21rw93 Szablon:Ziel Panacea 10 62065 556509 527515 2026-09-15T07:27:13Z Persino 2851 556509 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://panacea.pl}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude> g9xr5tiy22e5bqv3i4trfeq7vongjen Szablon:Pszcz PZN 10 62165 556514 528669 2026-09-15T07:31:11Z Persino 2851 556514 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://miesiecznik-pszczelarstwo.pl/uploads/pzn|czasopismo=Pszczelnicze Zeszyty Naukowe|issn=0552-4563.}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude> o9m0rb6u7b2f2che93omcwayqofbg5a 556524 556514 2026-09-15T08:06:31Z Persino 2851 556524 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://miesiecznik-pszczelarstwo.pl/uploads/pzn|czasopismo=Pszczelnicze Zeszyty Naukowe|issn=0552-4563}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude> f67pphp8dycv8v954hytucjom4d3x8t Szablon:Pszcz PDR 10 62167 556513 527513 2026-09-15T07:30:40Z Persino 2851 556513 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=http://doradztworolnicze.com}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude> ciwmimxz0rtnxvvv0mg06zhdq4b1dyg Szablon:Pszcz FeA 10 62169 556510 527510 2026-09-15T07:28:07Z Persino 2851 556510 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://www.bombus.it/pdf/fiori_e_api}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude> p1zw0darpyuqngz1v3kr05tsd7aimns Szablon:PrzypisStrona/opis 10 62171 556477 533940 2026-09-15T04:19:56Z Persino 2851 Persino przeniósł(-osła) stronę [[Szablon:PrzypisStrona/opis]] do [[Szablon:PrzypisStrona/silnik/opis]], bez pozostawienia przekierowania pod starym tytułem 533940 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|bez argumentów szablonu{{=}}url;tytuł;praca|zmienna z parametrami rodzica{{=}}tak|zmienna z argumentami ramki{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj|custom|...}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane w nagłówku {{s|pre}}, na dwa sposoby, w tym szablonie. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry ignorowane: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}. == Przykład == ; Kod {{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> 332insr18m9pc27qm0h826ugesto74o 556478 556477 2026-09-15T04:20:32Z Persino 2851 Persino przeniósł(-osła) stronę [[Szablon:PrzypisStrona/silnik/opis]] do [[Szablon:PrzypisStrona/opis]], bez pozostawienia przekierowania pod starym tytułem 533940 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|bez argumentów szablonu{{=}}url;tytuł;praca|zmienna z parametrami rodzica{{=}}tak|zmienna z argumentami ramki{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj|custom|...}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane w nagłówku {{s|pre}}, na dwa sposoby, w tym szablonie. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry ignorowane: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}. == Przykład == ; Kod {{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> 332insr18m9pc27qm0h826ugesto74o 556488 556478 2026-09-15T05:54:21Z Persino 2851 556488 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == ; Kod {{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> knluie32k6j4y436c16es7t3fzukm58 556489 556488 2026-09-15T05:59:04Z Persino 2851 556489 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == ; Kod {{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> nx5jt7hihgexdr5j8fkswo68jtf4kel 556495 556489 2026-09-15T06:18:41Z Persino 2851 /* Przykład */ 556495 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == ; Kod {{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{s|RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> 2fifaevi9fz8k67ho6zylhs9oqkn4wx 556501 556495 2026-09-15T06:44:00Z Persino 2851 /* Przykład */ 556501 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == ; Kod {{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> nx5jt7hihgexdr5j8fkswo68jtf4kel 556507 556501 2026-09-15T07:20:30Z Persino 2851 /* Przykład */ 556507 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == ; Kod {{s|RN|{{s|{{PAGENAME}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{PAGENAME}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> or150ppcg7kgv2fas8xfyy4t3nlu9z8 556508 556507 2026-09-15T07:21:31Z Persino 2851 /* Przykład */ 556508 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> 8jfmaaj5wzy7p8f9vjcua4bk9rqnidw 556515 556508 2026-09-15T07:36:59Z Persino 2851 /* Przykład */ 556515 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres=https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> ed22hh1w1ke54x35swsq89g6nnvg2bw 556517 556515 2026-09-15T07:48:24Z Persino 2851 /* Przykład */ 556517 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> drqyxjwi8q3fvxiso5g3lpeuv1wblo0 556520 556517 2026-09-15T07:52:31Z Persino 2851 556520 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> 8r2uxant2ir5p66cw22et9eev4w6l8v 556521 556520 2026-09-15T07:53:04Z Persino 2851 556521 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> gzun3x5uq2vxi6oe8u6qfvz8x977sxd 556522 556521 2026-09-15T07:55:23Z Persino 2851 /* Opis parametrów dodatkowych */ 556522 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> n15wfrcuc7ji7znzo7c138f2nbekthd 556523 556522 2026-09-15T07:57:08Z Persino 2851 556523 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> 6lq81vytt20s96hxdh0v3v7eic2b3q0 556525 556523 2026-09-15T08:10:04Z Persino 2851 556525 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> twczr6fn2zwyazp1ot8tqpew4op8kt7 556526 556525 2026-09-15T08:14:56Z Persino 2851 /* Zobacz też */ 556526 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o szablon: {{Code|{{s|Cytuj}}, i w niej wywołany moduł: {{Code|{{ld2|Cytuj}}}}, a w niej funkcję: {{Code|{{m|Cytuj|custom2}}}}, zbudowaną w oparciu, w języku {{lpg|Lua}} w {{lpr|Lua|Sccribunto}}, o: {{Code|{{m|Cytuj|custom}}}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> c0kk5urm1qzeurh81v0xxphfxns5epz 556547 556526 2026-09-15T10:36:50Z Persino 2851 /* Opis parametrów dodatkowych */ 556547 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> ; Dwa pierwsze parametry numerowane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}} ; A tutaj nazwane {{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową:&#32;}}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}} Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}. Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}. == Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon == Oto jest przykład szablonu: {{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}} == Opis parametrów == Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}. === Opis parametrów dodatkowych === * {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest problematycczny, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest), * {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny), * {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny), * {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny). ---- Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, które te zmienne nie wolno podawać, bo zostanie wywołany błąd funkcji: {{Code|{{m|Sprawdź|Parametry}}}}. === Parametry ignorowane === Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}. == Przykład == {{#ifeq:{{Szablon nie opis}}|PrzypisStrona| ; Kod {{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} | ; Kod {{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}} ; Wynik {{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}} {{OpakujKategorieZeSortowaniem|{{Przypisy}}}} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == ; Szablony szablonów przypisów * {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o szablon: {{Code|{{s|Cytuj}}, i w niej wywołany moduł: {{Code|{{ld2|Cytuj}}}}, a w niej funkcję: {{Code|{{m|Cytuj|custom2}}}}, zbudowaną w oparciu, w języku {{lpg|Lua}} w {{lpr|Lua|Sccribunto}}, o: {{Code|{{m|Cytuj|custom}}}}. {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategoria|Szablony podręczników}} {{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona |{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}} |{{Wolumin|<!-- -->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}} | Pszcz = Pszczelarstwo | Ziel = Napary }}<!-- -->| dokumentacja = tak | sortuj spacją = }}}} </includeonly> i6nkvp6qz7uiviseahnuk1kthrgbl9j Szablon:Pszcz IB 10 62218 556511 528230 2026-09-15T07:28:51Z Persino 2851 556511 wikitext text/x-wiki <includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://www.bienenkunde.rlp.de/Internet/global/Themen.nsf/(Web_P_Bienen_Infobrief_XP)|czasopismo=Bienen&Imkerei}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude> 5647k93ucd7x72k2c72bty3sfoin8nw Moduł:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron 828 62247 556341 556171 2026-09-14T16:10:06Z Persino 2851 556341 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,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_modul=require("Module:StronicowyParser/ZbieranieDanychStron"); local szablonowe_modul=require("Module:Szablonowe"); local liczby_modul=require("Module:Liczby"); local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaNazwaStrony"](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_strony,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,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,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_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,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_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,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_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca); else stronicowyparser_zbieraniedanychstron_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu); 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, }, 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; qu42uucc4m7akqyaqe6uu320m77dvox Moduł:Sprawdź/dane 828 63576 556491 544078 2026-09-15T06:04:42Z Persino 2851 556491 Scribunto text/plain local p={}; p.tabelka_argumentow_systemowych_funkcji={ ["nazwa przestrzeni nazw"]="", ["nazwa jednostki"]="txt", ["typ jednostki"]="txt", ["tytuł przestrzeni nazw"]="", ["tytuł jednostki"]="txt", ["rodzaj jednostki"]="txt", ["strona główna dla dzieci"]="txt", ["strona główna projektu"]="txt", ---- Kategorie błędów; ["usuń dodatkowe informacje"]="", ["usuń ostrzeżenie"]="", ["usuń linkowanie"]="", ["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji; ["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie"; ["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały ---- Koniec kategorii błędów; };--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu; p.tabelka_argumentow_dodatkowych_funkcji={ ["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych ["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu; ["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko; ["zmienna z nazwą szablonu rodzica"]="", -- zmienna ustawiająca nazwę szablonu rodzica; }; p.tabelka_argumentow_systemowych_szablonu={ ["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką; }; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu; return p; 9so9pprdyrk3aect5jvkdo9wwht7n09 556492 556491 2026-09-15T06:05:53Z Persino 2851 Anulowano wersję [[Special:Diff/556491|556491]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 556492 Scribunto text/plain local p={}; p.tabelka_argumentow_systemowych_funkcji={ ["nazwa przestrzeni nazw"]="", ["nazwa jednostki"]="txt", ["typ jednostki"]="txt", ["tytuł przestrzeni nazw"]="", ["tytuł jednostki"]="txt", ["rodzaj jednostki"]="txt", ["strona główna dla dzieci"]="txt", ["strona główna projektu"]="txt", ---- Kategorie błędów; ["usuń dodatkowe informacje"]="", ["usuń ostrzeżenie"]="", ["usuń linkowanie"]="", ["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji; ["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie"; ["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały ---- Koniec kategorii błędów; };--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu; p.tabelka_argumentow_dodatkowych_funkcji={ ["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych ["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu; ["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko; }; p.tabelka_argumentow_systemowych_szablonu={ ["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką; }; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu; return p; l0uonk6zdylhfoo5fi04rzoiv20yco2 556493 556492 2026-09-15T06:13:37Z Persino 2851 556493 Scribunto text/plain local p={}; p.tabelka_argumentow_systemowych_funkcji={ ["nazwa przestrzeni nazw"]="", ["nazwa jednostki"]="txt", ["typ jednostki"]="txt", ["tytuł przestrzeni nazw"]="", ["tytuł jednostki"]="txt", ["rodzaj jednostki"]="txt", ["strona główna dla dzieci"]="txt", ["strona główna projektu"]="txt", ---- Kategorie błędów; ["usuń dodatkowe informacje"]="", ["usuń ostrzeżenie"]="", ["usuń linkowanie"]="", ["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji; ["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie"; ["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały ---- Koniec kategorii błędów; };--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu; p.tabelka_argumentow_dodatkowych_funkcji={ ["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych ["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu; ["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko; ["zmienna z nazwą szablonu rodzica"]="", }; p.tabelka_argumentow_systemowych_szablonu={ ["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką; }; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu; return p; hqm8j1ei0a2mjzytqjqtmklh6z1tnlw 556494 556493 2026-09-15T06:15:32Z Persino 2851 556494 Scribunto text/plain local p={}; p.tabelka_argumentow_systemowych_funkcji={ ["nazwa przestrzeni nazw"]="", ["nazwa jednostki"]="txt", ["typ jednostki"]="txt", ["tytuł przestrzeni nazw"]="", ["tytuł jednostki"]="txt", ["rodzaj jednostki"]="txt", ["strona główna dla dzieci"]="txt", ["strona główna projektu"]="txt", ---- Kategorie błędów; ["usuń dodatkowe informacje"]="", ["usuń ostrzeżenie"]="", ["usuń linkowanie"]="", ["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji; ["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie"; ["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały ---- Koniec kategorii błędów; };--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu; p.tabelka_argumentow_dodatkowych_funkcji={ ["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych ["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu; ["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko; ["zmienna z nazwą szablonu rodzica"]="", ["nazwa szablonu rodzica"]="", }; p.tabelka_argumentow_systemowych_szablonu={ ["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką; }; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu; return p; cqm05cpkhlji56u8wdgewqhosbxtyop 556496 556494 2026-09-15T06:21:27Z Persino 2851 556496 Scribunto text/plain local p={}; p.tabelka_argumentow_systemowych_funkcji={ ["nazwa przestrzeni nazw"]="", ["nazwa jednostki"]="txt", ["typ jednostki"]="txt", ["tytuł przestrzeni nazw"]="", ["tytuł jednostki"]="txt", ["rodzaj jednostki"]="txt", ["strona główna dla dzieci"]="txt", ["strona główna projektu"]="txt", ---- Kategorie błędów; ["usuń dodatkowe informacje"]="", ["usuń ostrzeżenie"]="", ["usuń linkowanie"]="", ["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji; ["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie"; ["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały ---- Koniec kategorii błędów; };--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu; p.tabelka_argumentow_dodatkowych_funkcji={ ["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych ["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu; ["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko; }; p.tabelka_argumentow_systemowych_szablonu={ ["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką; }; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu; return p; l0uonk6zdylhfoo5fi04rzoiv20yco2 556499 556496 2026-09-15T06:38:06Z Persino 2851 556499 Scribunto text/plain local p={}; p.tabelka_argumentow_systemowych_funkcji={ ["nazwa przestrzeni nazw"]="", ["nazwa jednostki"]="txt", ["typ jednostki"]="txt", ["tytuł przestrzeni nazw"]="", ["tytuł jednostki"]="txt", ["rodzaj jednostki"]="txt", ["strona główna dla dzieci"]="txt", ["strona główna projektu"]="txt", ---- Kategorie błędów; ["usuń dodatkowe informacje"]="", ["usuń ostrzeżenie"]="", ["usuń linkowanie"]="", ["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji; ["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie"; ["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały ---- Koniec kategorii błędów; };--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu; p.tabelka_argumentow_dodatkowych_funkcji={ ["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych ["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu; ["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko; }; p.tabelka_argumentow_systemowych_szablonu={ ["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką; }; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu; p.tabelka_argumentowa_ramki_szablon={ ["nazwa szablonu rodzica"]="txt", } return p; kdu5isrxwz8eqz3yhblqazdu84ut9cx 556518 556499 2026-09-15T07:49:13Z Persino 2851 556518 Scribunto text/plain local p={}; p.tabelka_argumentow_systemowych_funkcji={ ["nazwa przestrzeni nazw"]="", ["nazwa jednostki"]="txt", ["typ jednostki"]="txt", ["tytuł przestrzeni nazw"]="", ["tytuł jednostki"]="txt", ["rodzaj jednostki"]="txt", ["strona główna dla dzieci"]="txt", ["strona główna projektu"]="txt", ---- Kategorie błędów; ["usuń dodatkowe informacje"]="", ["usuń ostrzeżenie"]="", ["usuń linkowanie"]="", ["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji; ["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie"; ["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały ---- Koniec kategorii błędów; };--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu; p.tabelka_argumentow_dodatkowych_funkcji={ ["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych ["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu; ["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko; }; p.tabelka_argumentow_systemowych_szablonu={ ["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką; }; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu; p.tabelka_argumentowa_ramki_szablon={ ["nazwa szablonu rodzica"]="txt", ["nazwa szablonu przodka"]="txt", } return p; 2b14zr7ksa70vw78ym6zsr3n5k40eui Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I 4 63902 556289 554340 2026-09-14T12:36:26Z Persino 2851 /* {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} */ 556289 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, * {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Przykład użycia: <syntaxhighlight lang="lua"> local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); </syntaxhighlight> Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami: <syntaxhighlight lang="lua"> local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}."; </syntaxhighlight> == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną. Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> {{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}; </syntaxhighlight> Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko: <syntaxhighlight lang="mediawiki"> '''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}. </syntaxhighlight> == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu funkcji. Parametry ramki funkcji tablicy transportu: * {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony, * {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta. Przykłady użycia: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Uzyskane wyniki w postaci nierozwiniętego wikikodu: <syntaxhighlight lang="mediawiki"> <templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span> </syntaxhighlight> == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu. Funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału, on wynosi: {{Code|9}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 204y49h6dgkesdp2mdu01a6o8gkkjol 556290 556289 2026-09-14T12:37:38Z Persino 2851 /* {{Code|p.NumerSekcjiStrony}} */ 556290 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, * {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Przykład użycia: <syntaxhighlight lang="lua"> local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); </syntaxhighlight> Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami: <syntaxhighlight lang="lua"> local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}."; </syntaxhighlight> == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, * {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną. Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> {{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}; </syntaxhighlight> Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko: <syntaxhighlight lang="mediawiki"> '''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}. </syntaxhighlight> == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki tablicy transportu funkcji. Parametry ramki funkcji tablicy transportu: * {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony, * {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta. Przykłady użycia: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Uzyskane wyniki w postaci nierozwiniętego wikikodu: <syntaxhighlight lang="mediawiki"> <templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span> </syntaxhighlight> == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator, na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu. Funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: * {{Code|frame}} - tablica ramki funkcji rablicy transportu. Parametry ramki funkcji tablicy transprotu dziecka rodzica: * {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess, * {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału, on wynosi: {{Code|9}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> m6qhddnb32ewhfrr2zfbs18fejaerwz 556354 556290 2026-09-14T18:02:02Z Persino 2851 556354 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, | 2 = {{Code|id_rozdzialu1}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, | 3 = {{Code|id_rozdzialu2}} | _3 = Ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. }} Przykład użycia: <syntaxhighlight lang="lua"> local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); </syntaxhighlight> Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami: <syntaxhighlight lang="lua"> local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}."; </syntaxhighlight> == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu. }} Parametry ramki funkcji tablicy transprotu dziecka rodzica: {{OpisParametrów | 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji, | 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, | 3 = {{Code|3}} | _3 = Ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. }} Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną. Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="mediawiki"> {{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}; </syntaxhighlight> Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko: <syntaxhighlight lang="mediawiki"> '''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}. </syntaxhighlight> == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu funkcji. }} Parametry ramki funkcji tablicy transportu: {{OpisParametrów | 1 = {{Code|1}} | _1 = Nazwa strony - funkcja rozwija nazwę strony. | 2 = {{Code|2}} | _2 = Identyfikator rozdzialu - domyślna wartość pusta. }} Przykłady użycia: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Uzyskane wyniki w postaci nierozwiniętego wikikodu: <syntaxhighlight lang="mediawiki"> <templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span> </syntaxhighlight> == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator, na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu. Funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu. }} Parametry ramki funkcji tablicy transprotu dziecka rodzica: {{OpisParametrów | 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess. | 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta. }} Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: <syntaxhighlight lang="lua"> {{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} </syntaxhighlight> Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału, on wynosi: {{Code|9}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rpgxhgyjpds94mqzz3deqrvpo58065z 556374 556354 2026-09-14T19:50:37Z Persino 2851 556374 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, | 2 = {{Code|id_rozdzialu1}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, | 3 = {{Code|id_rozdzialu2}} | _3 = Ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. }} === 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/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/}}. == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu. }} Parametry ramki funkcji tablicy transprotu dziecka rodzica: {{OpisParametrów | 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji, | 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, | 3 = {{Code|3}} | _3 = Ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. }} === Przykład przy pomocy szablonu z definicją z użytą tą funkcją === Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/}}. == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu funkcji. }} Parametry ramki funkcji tablicy transportu: {{OpisParametrów | 1 = {{Code|1}} | _1 = Nazwa strony - funkcja rozwija nazwę strony. | 2 = {{Code|2}} | _2 = Identyfikator rozdzialu - domyślna wartość pusta. }} === Przykład przy pomocy szablonu z definicją z użytą tą funkcją === Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator, na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu. Funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu. }} Parametry ramki funkcji tablicy transprotu dziecka rodzica: {{OpisParametrów | 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess. | 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta. }} === Przykład przy pomocy szablonu z definicją z użytą tą funkcją === Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pwqdb6aht7bq8q7k4qlc5iottgtdbdj 556375 556374 2026-09-14T19:51:24Z Persino 2851 /* {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} */ 556375 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.TekstWprowadzeniaTekstu}} == Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu, | 2 = {{Code|id_rozdzialu1}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, | 3 = {{Code|id_rozdzialu2}} | _3 = Ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. }} === 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/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/}}. == {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} == Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu. }} Parametry ramki funkcji tablicy transprotu dziecka rodzica: {{OpisParametrów | 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji, | 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora, | 3 = {{Code|3}} | _3 = Ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora. }} === Przykład przy pomocy szablonu z definicją z użytą tą funkcją === Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/}}. == {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} == Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony . Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu funkcji. }} Parametry ramki funkcji tablicy transportu: {{OpisParametrów | 1 = {{Code|1}} | _1 = Nazwa strony - funkcja rozwija nazwę strony. | 2 = {{Code|2}} | _2 = Identyfikator rozdzialu - domyślna wartość pusta. }} === Przykład przy pomocy szablonu z definicją z użytą tą funkcją === Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/}}. == {{Code|p.NumerSekcjiStrony}} == Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator, na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{LzLua|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu. Funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumerSekcjiStrony(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu. }} Parametry ramki funkcji tablicy transprotu dziecka rodzica: {{OpisParametrów | 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess. | 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta. }} === Przykład przy pomocy szablonu z definicją z użytą tą funkcją === Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> m1x20k5hjqtirq4x4zdx0vi6y1bucna Wikibooks:Moduły/StronicowyParser/Rozdziały 4 63903 556353 554395 2026-09-14T17:55:39Z Persino 2851 556353 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Wstęp == Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. === Rozdziały === * Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane: ** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}}, ** Inne (nierównaniowe): *** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}}, *** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}}, *** Rozdziały sztucznego napisu wprowadzenia tekstu, dla szablonów takich jak: {{s|HNumer}}, gdzie jego parametr pierwszy, to zwykły anormalny rozdział dodatni równaniowy, nawet z niedozwoloną liczbą równa się po obu stronach, * Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}}, * Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały/Tom II}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}. === Zmienne spotykane w opisywanych tutaj funkcjach === ==== Zmienne bazy ==== W poniższych funkcjach często spotykamy parametry: * {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst przeważnie zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje, * {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony szablonowe jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych. Jest liczona bez nazwy przestrzeni {{Np|Template|link=tak}}, w tej przestrzeni, a w innych z przestrzeniami, a w {{Np|(main)|link=tak}} z dwukropkiem na początku. ==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ==== {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = tabela parametrów szablonu. | 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = Nazwa szablonu. | 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela jego modyfikatorów. }} ==== Zmienne znacznikowe: '''{{lpg|HTML}}''' i mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' ==== {{OpisParametrów | 1 = {{Code|nazwa}} {{Patrz|nazwa}} | _1 = Nazwa znacznika, napisana małymi literami. | 2 = {{Code|zawartosc}} {{Patrz|zawartosc}} | _2 = Zawartość znacznika, pomiędzy tagami. | 3 = {{Code|atrybuty}} {{Patrz|atrybuty}} | _3 = Atrybuty znacznika, w tagach. }} ==== Baza danych wikikodu ==== Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu. ===== Zmienne bazy danych i do nich parametrów ===== {{OpisParametrów | 1 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _1 = Nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}}. | 2 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _2 = Tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _3 = Tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy. }} ===== Inne elementy bazy ===== {{OpisParametrów | 1 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _1 = Tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku. }} ==== Funkcje bazy danych i do nich parametrów ==== {{OpisParametrów | 1 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _1 = Funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 2 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _2 = funkcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. }} ==== Inne funkcje ==== Inne funkcje używane przez opisywany moduł. ===== Funkcje bazy ===== {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} | _1 = Służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych, | 2 = {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} | _2 = Funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, | 3 = {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} | _3 = Sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej). ===== Inne ===== {{OpisParametrów | 1 = {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} | _1 = Funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych. }} ==== Elementy bazy ==== {{OpisParametrów | 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Parametr, w postaci łańcucha znakowego typu elementu w kodzie. | 2 = {{Code|kod}} {{Patrz|kod}} | _2 = Numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}. }} ==== Inne zmienne ==== {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki, | 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = Nazwa artykułu spisu treści. }} === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów === Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji) local tab_obiekt=tab_analiza[obiekt]; if(not tab_obiekt)then return;end; for _,wartosc in pairs(tab_obiekt)do local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc]; if(element_wartosc)then element_wartosc[kod]=nil; end; end; end; </syntaxhighlight> Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}. === Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy === A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne: <syntaxhighlight lang="lua"> local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji) tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; end; </syntaxhighlight> Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli. Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}. == Spis treści == Przedstawia funkcje do zbierania informacji o spisach, ale w sferze wstępnej w wersji preanalizowanej, nie tak jak robi moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, które wykorzystuje ten moduł opisywany, do zbierania informacji o nagłówkach i w nich rozdziałami, z informacjami, które są elementami charakteryzującymi dany artykuł, a nawet rozdział, czyli w tej dokumentacji są te funkcje. {{Hr}} {{Kolumny|2|2= === {{lru|Moduły/StronicowyParser/Rozdziały/Tom I}} - Operacje na sekcjach === Funkcje do uzyskiwania informacji o sekcji, w tym o jej numerze, i jej tekście rozdziału pomiędzy poszczególnymi sekcjami o danych identyfikatorach. One służą w operacjach w skryptach {{lpg|JavaScript}}. === {{lru|Moduły/StronicowyParser/Rozdziały/Tom II}} - Tworzenie i wydobywania coś z sekcji === Funkcje do analizowania napisów wprowadzenia tekstu z postaci surowej, w tym rozdziały dodatnie, czy nagłówkowe, a nawet według szablonu {{s|HNumer}}. Funkcje tworzące nagłowki o dowolnym poziomie, raz jako nagłówki dodatnie równaniowo, a za innym razem według znaczników nagłówków, albo tylko według znaczników nagłówków. Funkcje są tam od wydzielania z nagłówka samego napisu wprowadzenia tekstu, tzn. jego zawartość. Funkcje wykrywające, czy w nim są rozdziały dodatnie rówaniowo, czy pozycje listy. === {{lru|Moduły/StronicowyParser/Rozdziały/Tom III}} - Modyfikacje elementów w celu uzyskania lepszego formatu === Funkcje do modyfikacji analizowanej strony do lepszego formatu, by później łatwo dało się ją parsować, by uzyskać pewne, ściśle okreslone elementy informacyjne. One sprawdzają, czy w nich są szablony, które muszą być w spisie, któryś przynajmniej z nich, ale nie zawsze. Funkcje sparwdzające, czy w nich są specjalne obiekty. Czy szablony mają odpowiednie nazwy według szablonów kompletowania. Funkcje usuwające kolejne spacje i dolne myślniki zamieniając je na jedną spacje. Funkcje wydzielające z wnętrza szablonu ich odpowiednią zawartość, według ściśle okreslonej procedury. Funkcje tworzące elementy według wzoru. Fukcje zamieniające znaczniki i szablony, nowej linii i kresek, na kolejno na znaki nowej linii. Funkcje do integracji tekstu. === {{lru|Moduły/StronicowyParser/Rozdziały/Tom IV}} - Parsowanie innych linii niż rozdziały dodatnie równaniowo === Funkcje do parsowania linii, ale nie linii będących rozdziałem dodatnim równaniowym, za pomocą zwróconej funkcji, która poza ciałem, ale w wiekszej funkcji rodzicu, są zbieranne informacje, o analizowanych liniach, które mogą być rozdziałami, ale nie muszą być, bo niekażda linia jest sekcją w uznaniu fukncji w opisywanym tym module. === {{lru|Moduły/StronicowyParser/Rozdziały/Tom V}} - Zbieranie informacji o sekcjach i ich tekstach rozdziałów === Funkcje do skladania, upraszczania ich oraz zbierania informacji o rozdziałach i ich tekstach rozdziałów (w tym ich modyfikacji i tworzeniu), i z nimi stowarzyszącymi elementami, jest to robione przy pomocy iteratora, który analizuje poszczególne sekcje, wraz z ich informacjami. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9ity2pvpdnv9qa4z6c0bxo3ghtqh38t Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II 4 63904 556291 554400 2026-09-14T12:49:58Z Persino 2851 /* {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} */ 556291 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. Funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{lpg|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez '''{{NS|k=mw|l=tak|w=tak}}''', a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{LzLua|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Wartość zwraca: * Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}. * Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}. Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich znaki nowych linii, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Funkcja jest skomplikowana, analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{Code|z_parametrami_linkowymi}} {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. Gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Funkcja jest bardzo prosta, ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ozcw1h1rm3le0losegn2hoz8h5oanbd 556292 556291 2026-09-14T12:52:07Z Persino 2851 /* {{Code|p.WierszHNumer}} */ 556292 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. Funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{lpg|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez '''{{NS|k=mw|l=tak|w=tak}}''', a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{LzLua|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Wartość zwraca: * Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}. * Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}. Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Funkcja jest skomplikowana, analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{Code|z_parametrami_linkowymi}} {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. Gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Funkcja jest bardzo prosta, ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hxdt8p7unpkmqdctinvlu3xdzis6qlv 556293 556292 2026-09-14T12:52:35Z Persino 2851 /* {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} */ 556293 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. Funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{lpg|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez '''{{NS|k=mw|l=tak|w=tak}}''', a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{LzLua|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Wartość zwraca: * Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}. * Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}. Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Funkcja jest skomplikowana, analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{Code|z_parametrami_linkowymi}} {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. Gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Funkcja jest bardzo prosta, ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> sl5dh2l31jmw99xuedi5oct06egkfcb 556294 556293 2026-09-14T12:58:38Z Persino 2851 /* {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} */ 556294 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. Funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{lpg|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez '''{{NS|k=mw|l=tak|w=tak}}''', a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{LzLua|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Wartość zwraca: * Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}. * Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}. Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Funkcja jest skomplikowana, analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; ---- Początek wydzielania poszczególnych linii; ... ---- Jego koniec; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{Code|z_parametrami_linkowymi}} {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. Gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Funkcja jest bardzo prosta, ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ru0k8fzaeimyswcyoke5nsqxi6rag0s 556295 556294 2026-09-14T13:01:29Z Persino 2851 /* {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} */ 556295 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. Funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{lpg|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez '''{{NS|k=mw|l=tak|w=tak}}''', a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{LzLua|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Wartość zwraca: * Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}. * Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}. Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Funkcja jest skomplikowana, analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{Code|z_parametrami_linkowymi}} {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. Gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Funkcja jest bardzo prosta, ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> o0fs9d2ryj6id5s9t9ymls7914jpp8v 556296 556295 2026-09-14T13:02:46Z Persino 2851 /* {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} */ 556296 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. Funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial}} - tekst wnętrza rozdziału, * {{Code|poziom}} - numer całkowity dodatni poziomu. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu, * {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu, * {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu. Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: * {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{lpg|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez '''{{NS|k=mw|l=tak|w=tak}}''', a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{LzLua|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana, Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem. Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Wartość zwraca: * Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}. * Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}. Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - parametr z tymi nagłówkami. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Funkcja jest skomplikowana, analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: * {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez. Zwracane wartości: * {{Code|rozdzial}} - rozdzial bez numeracji, * {{Code|numetracja}} - numeracja. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{Code|z_parametrami_linkowymi}} {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}}, * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia bez przedrostka, * {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej, * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. Gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa}} - nazwa tagu, * {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Funkcja jest bardzo prosta, ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nim znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} - zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ib0o4zdx52wnb0isk4hy7dto0z1wq8g 556355 556296 2026-09-14T18:20:08Z Persino 2851 556355 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.NapisWprowadzeniaTekstu}} == Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. Funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|rozdzial}} | _1 = Tekst wnętrza rozdziału. | 2 = {{Code|poziom}} | _2 = Numer całkowity dodatni poziomu. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial="Tekst rozdziału"; local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4); local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8); </syntaxhighlight> Wyniki użycia w zmiennych: <syntaxhighlight lang="lua"> local napis_rozdzialu1="\n====Tekst rozdziału====\n"; local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n"; </syntaxhighlight> == {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} == Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu. Defnicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst zawartości pierwszego parametru wspomnianego szablonu. | 2 = {{Code|zawartość}} {{Patrz|zawartosc}} | _2 = Zawartość elementu kodu. | 3 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} | _3 = Jaki to jest obiekt, np. {{Code|ZNACZNIK}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod danego obiektu. }} Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, aby wykorzystać ta metodę. Przykłady użycia, używając omawianego szablonu: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}} {{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}} </syntaxhighlight> Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki: <syntaxhighlight lang="lua"> local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ==="; local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>"; </syntaxhighlight> A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną): <syntaxhighlight lang="lua"> local zawartosc="Zawartość znacznika"; local zawartosc="Zawartość znacznika"; </syntaxhighlight> W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się: <syntaxhighlight lang="lua"> 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; </syntaxhighlight> Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić). == {{Code|p.NapisWprowadzeniaTekstuHNumer}} == Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NapisWprowadzeniaTekstuHNumer(parametr)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|parametr}} | _1 = Napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też. }} Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem: <syntaxhighlight lang="mediawiki"> {{HNumer|1= === Nagłówek tekstu ===}} {{HNumer|1= ======= Nagłówek tekstu =======}} </syntaxhighlight> Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody: <syntaxhighlight lang="lua"> ---- Nagłówki typowo dodatnie local tekst1="=== Nagłówek tekstu ==="; local tekst2="======= Nagłówek tekstu ======="; ---- Wywołania tworzące nagłówki local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1); local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2); </syntaxhighlight> Funkcja zamienia to kolejno je na standardowe nagłówki {{lpg|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}: <syntaxhighlight lang="lua"> local naglowek1="<h3>Nagłówek tekstu</h3>"; local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>"; </syntaxhighlight> == {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} == Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez '''{{NS|k=mw|l=tak|w=tak}}''', a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{LzLua|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="====== Tekst nagłówka ======"; local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst); </syntaxhighlight> Wynikiem działania tego przykładu: <syntaxhighlight lang="lua"> local naglowek="Tekst nagłówka"; local poziom=6; </syntaxhighlight> Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie. == {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} == Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} | _1 = Linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local zawartosc="Tekst nagłówka"; local poziom=5; </syntaxhighlight> == {{Code|p.CzyJestNapisWprowadzeniaTekstu}} == Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} | _1 = Tekst, jak w: {{LinkPatrz|zawartosc}}, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n"; local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst); </syntaxhighlight> W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli: <syntaxhighlight lang="lua"> local napis_pierwszy_w_tekscie="== Tekst nagłówka == "; </syntaxhighlight> Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}. == {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} | _1 = Tekst, jak w: {{LinkPatrz|zawartosc}}, w który ma znajdować napis wprowadzenia tekstu w postaci listy. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n"; local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}. == {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} == Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}. Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wiersz}} | _1 = Czy w tekście jest wiersz z takim opisywanym nagłókiem. }} Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny). Wartość zwracana: {{OpisParametrów | 1 = Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}. | komórka1 = tak | 2 = Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}. | komórka2 = tak }} Przykłady funkcji: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst1="====== Tekst nagłówka ======"; local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>"; local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1); local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local czy_jest_naglowek1,jaki_naglowek1=true,true; local czy_jest_naglowek2,jaki_naglowek2=true,false; </syntaxhighlight> == {{Code|p.WierszHNumer}} == Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie tego nagłówka znak nowej linii: {{Code|\n}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WierszHNumer(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Parametr z tymi nagłówkami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>"; local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n"; </syntaxhighlight> == {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} == Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Funkcja jest skomplikowana, analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|rozdzial_z_numeracja}} | _1 = Rozdzial z numeracją lub bez. }} Zwracane wartości: {{OpisParametrów | 1 = {{Code|rozdzial}} | _1 = Rozdzial bez numeracji, | 2 = {{Code|numetracja}} | _2 = Numeracja. }} Przykłady użycia: ; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja="5.1.2.3."; </syntaxhighlight> ; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local rozdzial_z_numeracja="Napis Rozdziału"; local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local rozdzial="Napis Rozdziału"; local numeracja=""; </syntaxhighlight> == {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} == Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametr funkcji: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna, | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}. Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa): <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="Spis treści"; local tablica_analizy_obiektow_strony_dany_modul={}; ---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); ---- Koniec tej części kodu; local tablica_danych_parametrow_szablonu_strony={}; local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Funckja w tym wypadku zwraca wynik: <syntaxhighlight lang="lua"> local rozdzial,czy_tak="Spis treści",true; </syntaxhighlight> Weźmy inny przykład: <syntaxhighlight lang="lua"> ---- Przykład pierwszy; local linia="'''Nagłówek'''"; local rozdzial,czy_tak="'''Nagłówek'''",true; ---- Przykład drugi; local linia="'''Nagłówek'''."; local rozdzial,czy_tak="'''Nagłówek'''.",false; </syntaxhighlight> == {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} == Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{Code|z_parametrami_linkowymi}} {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} | _1 = Przedrostek listy z linią {{Code|linia}}. | 2 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _2 = Linia bez przedrostka. | 3 = {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} | _3 = Wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru, a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej. | 4 = {{Code|nazwa_przestrzeni}} | _4 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki. | 5 = {{Code|nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 9 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _9 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local linia="''[[Książka/Artykuł|Artykuł]]''"; local tablica_analizy_obiektow_strony_dany_modul={}; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local przedrotek_listy=":"; local tablica_danych_parametrow_szablonu_strony={}; local tab_nazwa_spisow_przekierowaniowych={}; ---- Tutaj funkcja zwróci wartość: true; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); ---- Tutaj funkcja zwróci wartość: false; local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); </syntaxhighlight> == {{Code|p.HnNumerWprowadzeniaTekstu}} == Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. Gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa}} | _1 = Nazwa tagu typu {{Tag|h<numer>}}, gdzie: {{Code|<nowiki>0 < numer < 7</nowiki>}}. | 2 = {{Code|atrybuty}} | _2 = Tabela atrybutów, których z jedną z elementów może być opcja: '''class'''. }} Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w: <syntaxhighlight lang="lua"> p.znaczniki_wprowadzenia_tekstu={ ["h1"]=1, ["h2"]=2, ["h3"]=3, ["h4"]=4, ["h5"]=5, ["h6"]=6, }; </syntaxhighlight> Funkcja posługuje się jedynie na tych typach znaczników, a nie innych. Przykłady użycia: ; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h5"; local atrybuty={}; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja zwróci wynik: {{Code|5}}. ; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}} <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa="h6"; local atrybuty={};atrybuty["class"]="mw-hnumber-9"; local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty); </syntaxhighlight> Funkcja daje wynik: {{Code|9}}. == {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} == Funkcja zwraca numerację i rozdział całego rozdziału. Funkcja jest bardzo prosta, ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nim znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} | _1 = Zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local zawartosc="5.1.6. Rozdział"; local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local numeracja,rozdzial="5.1.6.","Rozdział"; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4avc03trs6pf9xtnespieng7ayquglk Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III 4 63905 556297 551352 2026-09-14T13:05:58Z Persino 2851 /* {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} */ 556297 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Funkcja wykorzystuje: * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, * {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst do policzenia, zawierające elementy z omawianymi kodami, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przerobienia. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami, * {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy, * {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> 3o8lj8k12c5f0omu30ell0p88wtyod1 556298 556297 2026-09-14T13:06:45Z Persino 2851 /* {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} */ 556298 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Funkcja wykorzystuje: * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, * {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst do policzenia, zawierające elementy z omawianymi kodami, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przerobienia. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami, * {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy, * {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> 3dm78ahncxult2k54w26czah1fs21tw 556299 556298 2026-09-14T13:09:10Z Persino 2851 /* {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} */ 556299 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Funkcja wykorzystuje: * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, * {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst do policzenia, zawierające elementy z omawianymi kodami, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przerobienia. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami, * {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy, * {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> i63g2qrcroy9k7p8m2itngp8op4jatr 556300 556299 2026-09-14T13:10:34Z Persino 2851 /* {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} */ 556300 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. Funkcja wykorzystuje: * {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, * {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst do policzenia, zawierające elementy z omawianymi kodami, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, * {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, * {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} - tekst do przerobienia. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami, * {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy, * {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, * {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> n7yum0yxlvnt883eo1q9mrjd3j0atu5 556356 556300 2026-09-14T18:32:42Z Persino 2851 556356 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} == Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.linki_szablony_elementy_spisu_rzeczy={ ["SpisTreści"]=true, ["Sekcja referencyjna"]=true, ["Sr"]=true, ["Link wewnętrzny"]=true, ["Ly"]=true, ["LinkOgólne"]=true, ["Lo"]=true, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}. Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. }} Funkcja wykorzystuje: {{OpisParametrów | 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. | 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = Jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny. }} Przykład użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}."; local tablica_analizy_obiektow_strony_dany_modul={}; local tablica_danych_parametrow_szablonu_strony={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}, a póżniej był liczony wynik z dyskutowanej funkcji. == {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} == Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł Szablonowe}}''', wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami. | 2 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _2 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul); </syntaxhighlight> Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu|StronicowyParser/Rozdziały}}. == {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} == Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki, któremu to wszystko się dzieje, przedstawia się w formie: <syntaxhighlight lang="lua"> p.szablony_kompletowania_stron_woluminu={ ["Kompletność"]=true, ["Kompletność krótka"]=true, ["Kompletność junior"]=true, ["Książka"]=true, }; </syntaxhighlight> Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, | 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, | 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, potrzebny do poprzedniej tabeli. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local nazwa_szablonu="Kompletność krótka"; local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil); </syntaxhighlight> Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli. == {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} == Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do przerobienia. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___"; tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst); </syntaxhighlight> Uzyskano wyniki: <syntaxhighlight lang="lua"> tekst="Tekst_nagłówka_strony"; </syntaxhighlight> == {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} == Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury. Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}: <syntaxhighlight lang="lua"> p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={ ["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne; }; </syntaxhighlight> Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}. Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami. | 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}. == {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} == Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|<nowiki>$(<name>)</nowiki>}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela: <syntaxhighlight lang="lua"> p.szablony_z_dodatkiem_obiektowym={ ["ISBN"]="ISBN $(1)"; }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. }} Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości. Przykłady użycia: <syntaxhighlight lang="lua"> local szablon="{{ISBN|83-8678-825-9}}"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały") local tablica_danych_parametrow_szablonu_strony={}; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul); local tekst=""; for szablon,obiekt,kod in iterator do if(obiekt=="SZABLON")then tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst; end; end; </syntaxhighlight> Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}. == {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} == Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 5 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_5 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}."; local tablica_analizy_obiektow_strony_dany_modul={}; tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); </syntaxhighlight> Zwrócone wyniki: <syntaxhighlight lang="lua"> local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n ."; </syntaxhighlight> == {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} == Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.: <syntaxhighlight lang="lua"> p.szablony_w_nie_w_tej_samej_linii={ ["SpisPozycja"]=true, ["SpisZw"]=true, ["SpisTreści"]=true, }; </syntaxhighlight> Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,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; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy. | 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}}. | 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}. | 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n"; local tablica_analizy_obiektow_strony_dany_modul={}; local szablonowe_modul=require("Module:Szablonowe"); tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local tablica_danych_parametrow_szablonu_strony={}; tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil); </syntaxhighlight> Zwracane wyniki: <syntaxhighlight lang="lua"> local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'"; </syntaxhighlight> irbpjh8lojoq81zqzgpiqx9bc5vlvsn Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV 4 63906 556301 554401 2026-09-14T13:14:35Z Persino 2851 /* {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} */ 556301 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracanajest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy występują te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> knzhqidltrc75jmd16mzue0mieaasis 556302 556301 2026-09-14T13:16:36Z Persino 2851 /* Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe */ 556302 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracanajest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy występują te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bdcmrj1lctbdh2rzb1ngml9416w1l7d 556303 556302 2026-09-14T13:20:09Z Persino 2851 /* {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} */ 556303 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy występują te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cl7pk02c0nxcduy3tq6shi4as420dvu 556304 556303 2026-09-14T13:21:40Z Persino 2851 /* {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} */ 556304 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> sgvl4zqg7k1ym3fhsksj41pmyms6el9 556305 556304 2026-09-14T13:22:48Z Persino 2851 /* {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} */ 556305 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> irealfx27dj444o6jg3fwcxikiqap11 556306 556305 2026-09-14T13:27:53Z Persino 2851 /* Brak numeracji rozdziału */ 556306 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7rt75j7za8twqn3z1mxrzxsj4lqiisb 556307 556306 2026-09-14T13:29:48Z Persino 2851 /* Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list */ 556307 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0mlg248yu11v8g2pbeo3u5noyvc1o1j 556308 556307 2026-09-14T13:31:27Z Persino 2851 /* Iterator po zawartości tekstu linii prawdopodobnego rozdziału */ 556308 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8e0bk3f9tp8ub36gr2kwa9bfsuth60n 556309 556308 2026-09-14T13:32:41Z Persino 2851 /* Możliwe operacje robione przez funkcję iteratora */ 556309 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gell8ho7unr452kpk1a3c96d1lh8l51 556310 556309 2026-09-14T13:40:47Z Persino 2851 /* Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział */ 556310 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dp0t2zvtrkhyyx682j15sxel0kal099 556311 556310 2026-09-14T13:46:30Z Persino 2851 /* Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział */ 556311 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q41xd1ie5sl4cq011raafkojw7fntg7 556312 556311 2026-09-14T13:48:35Z Persino 2851 /* Rozdziały centrowane */ 556312 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ntaogwzg4ju79jjahcqcrbph29x4ta9 556313 556312 2026-09-14T13:49:00Z Persino 2851 /* Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} */ 556313 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> flynrwj9ths29odlv215dzoe80fltlt 556314 556313 2026-09-14T13:50:12Z Persino 2851 /* Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} */ 556314 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gddy rozdział inumeracja nie istnieją lub są puste, wtedy funkcja zwraca wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> oa4ytopjodcjdby4jwx3mfqwqfzlicw 556315 556314 2026-09-14T13:51:03Z Persino 2851 /* Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} */ 556315 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> flynrwj9ths29odlv215dzoe80fltlt 556316 556315 2026-09-14T13:53:01Z Persino 2851 /* Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału */ 556316 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Gdy rozdział i numeracja nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość: <syntaxhighlight lang="lua"> return nil; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7ua6t5oo4r8qw1cvlvnq1bp21wn63kv 556317 556316 2026-09-14T14:02:53Z Persino 2851 /* Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału */ 556317 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: * {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, * {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, * {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}} * {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. Parametry funkcji zwracanej: * {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, * {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: * {{Code|linia_temp}} {{Patrz|linia_temp}} - rozważana linia, * {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii, * {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}, * {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}, * {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi, * {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9tzarle8xgz2v5rqfpytobh0jpy30fa 556357 556317 2026-09-14T18:38:38Z Persino 2851 556357 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} == Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end; </syntaxhighlight> Funkcja nie przyjmuje żadnego parametru. Przykłady użycia: <syntaxhighlight lang="lua"> local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); </syntaxhighlight> Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku. == {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} == Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list, tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci) ... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane. return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji; end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}} | _1 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}. | 2 = {{Code|nazwa_przestrzeni_ksiazki}} | _2 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}. | 3 = {{Code|nazwa_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}. | 4 = {{Code|nazwa_spisu_tresci}} | _4 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}. | 5 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. | 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}. | 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _8 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział, | 2 = {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} | _2 = Czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej. }} Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość: {{OpisParametrów | 1 = {{Code|linia_temp}} {{Patrz|linia_temp}} | _1 = Rozważana linia. | 2 = {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} | _2 = Nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii. | 3 = {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} | _3 = Poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}. | 4 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _4 = Początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}. | 5 = {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} | _5 = Numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi. | 6 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _6 = Czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest centrowany, to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}. }} Przykłady użycia: <syntaxhighlight lang="lua"> local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local tablica_analizy_obiektow_strony_dany_modul={}; local linia="<h6>Nagłówek</h6>"; linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local tab_nazwa_spisow_przekierowaniowych={}; local nazwa_przestrzeni=""; local nazwa_przestrzeni_ksiazki=""; local nazwa_ksiazki="Książki"; local nazwa_spisu_tresci=""; local pelna_nazwa_spisu_tresci_szablonowa=""; local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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; local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Funkcja zwraca wyniki: <syntaxhighlight lang="lua"> local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil; </syntaxhighlight> === Wartości początkowe przyjmowane przez funkcję === Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}: <syntaxhighlight lang="lua"> local maksymalny_rozmiar_rozdzialu_zerowego=70; </syntaxhighlight> Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział. Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}. ==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ==== Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada. ==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ==== Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdefiniowane w tablicach, które są napisane w podrozdziałach poniżej. ===== Pierwszego typu - linki inteligentne ===== Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ===== Drugiego typu - szablony tworzenia spisu rzeczy ===== Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}. ==== Znaczniki wprowadzenia tekstu ==== Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam. Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane. Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}. ==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ==== Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}: <syntaxhighlight lang="lua"> p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={ ["Rozdział"]=true, ["Podrozdział"]=true, ["MapaObrazu"]=true, }; </syntaxhighlight> Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}. ==== Funkcje lokalne ==== ===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} ===== ====== Pierwszy przypadek ====== * Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej. ====== Druga sytuacja ====== ; Przypadek nieprawidłowości{{dk}} * W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami. * Lub w rozdziale można wyróżnić pojedyńcze litery duże. * lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu. ; Zwracana wartość{{dk}} * W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy. ===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} ===== Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, którego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}. ===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} ===== Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie. Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi. ===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} ===== Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba. ===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} ===== To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ==== Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami. ==== Badanie, jaki to jest rozdział ==== ===== Rozdział zerowy ===== ====== Istnienie rozdziału z numeracją ====== * Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu. ====== Brak numeracji rozdziału ====== Określimy tutaj sytuację braku numeracji rozdziału. * Wykryta linia cudzysłowu{{dk}} *: Jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu. * Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}} *: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim. ===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list ===== Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}. ==== Uzyskany istniejący rozdział ==== Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji. ==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ==== Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych. ===== Możliwe operacje robione przez funkcję iteratora ===== Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią. ====== Obiekt szablon, czyli typu SZABLON ====== W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}: ; Szablony rozdziałów szablonowe{{dk}} * Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. * Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. ; Szablony linków{{dk}} * A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}} i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. ; Wartość zwracana{{dk}} A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje. ====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ====== Gdy obiekt jest równy: {{Code|ZNACZNIK}}: * Wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. ** Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ; Pierwszy przypadek sprawdzania{{dk}} * W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}. ; Drugi przypadek (ciąg dalszy){{dk}} * A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}. ====== Linki wewnętrzne i zewnętrzne ====== Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak inicjowane jak tam. ==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ==== Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial; </syntaxhighlight> Parametry zwracane przez funkcję zwracaną: * {{Code|linia}} - rozwarzana linia zwracana przez funkcję, * {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji, * {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię, * {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}}, * {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami, * {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}. Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe. ===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział ===== Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii. Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy. W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,0,nil,numeracja; </syntaxhighlight> Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}. W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}. ===== Rozdziały centrowane ===== Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}. Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}. Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,2,nil,numeracja,true; </syntaxhighlight> ===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}===== Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}. Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,numer_rozdzialu,nil,numeracja; </syntaxhighlight> ===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})===== Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}. Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}). Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}: <syntaxhighlight lang="lua"> return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja; </syntaxhighlight> {{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> keck302s4m13uvrk0j399b02qbshe7t Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I 4 63907 556318 554386 2026-09-14T14:05:18Z Persino 2851 /* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */ 556318 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charaketryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> scga6ws1ol0o7v7wbewyvqa2qo0h9xl 556319 556318 2026-09-14T14:08:25Z Persino 2851 /* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */ 556319 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charaketryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4ned2rxybu7rr8eqsq9m9lbsz85s9zq 556320 556319 2026-09-14T14:09:50Z Persino 2851 /* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */ 556320 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 359e4h5tyvgrikldb1qpgkygg3mgze1 556321 556320 2026-09-14T14:11:41Z Persino 2851 /* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */ 556321 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6vj448hk4ob3xzit5hxhk0g7eh0390s 556322 556321 2026-09-14T14:22:19Z Persino 2851 /* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */ 556322 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ah5io5vdov5d5cszzvdc74x2wb7opir 556323 556322 2026-09-14T14:25:31Z Persino 2851 /* Znaczniki szablonowe */ 556323 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 61vuuiahsqo9u68xtt7ug86akvw467n 556324 556323 2026-09-14T14:26:12Z Persino 2851 /* Szablony generujące poziomy o dowolnym poziomie */ 556324 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> crbs2nttijsgx6kesbtlthbnzz06200 556325 556324 2026-09-14T14:26:46Z Persino 2851 /* Magiczne derektywy */ 556325 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> memd48byfzj3pma65jb3gwwqp4pob1v 556326 556325 2026-09-14T14:29:29Z Persino 2851 /* Opis dalszy funkcji */ 556326 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> iiolff3oe6ldqi1rrf91rgwyrmcsilw 556327 556326 2026-09-14T14:30:59Z Persino 2851 /* {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} */ 556327 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e4ivegq7azp9g0yiwpuqnt99kckn6tv 556328 556327 2026-09-14T14:32:46Z Persino 2851 /* {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} */ 556328 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> oc8gonm1rcwud8o7lep2f9acoi8dvw0 556329 556328 2026-09-14T14:34:35Z Persino 2851 /* {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} */ 556329 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cv8pa7l53ztqb1z8s6w5fpo2n6sp12t 556331 556329 2026-09-14T14:39:45Z Persino 2851 /* {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} */ 556331 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana wartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bldup9fyvkx9ys5dxemnsu4svcpmphg 556332 556331 2026-09-14T14:47:47Z Persino 2851 /* {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} */ 556332 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, * Nazwy strony danego określonego spisu: ** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, * {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, * {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, * Tablice wynikłe z zakodowanych zmiennych: ** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, * Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów: ** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość, ** {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), ** {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. Parametry funkcji zwracanej: * Funkcja nie przyjmuje żadnych parametrów. Jednoczesne parametry zwracane przez funkcję zwracaną: * {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią, * {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału), * {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału, * {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału * {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}, * {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: * {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. ; Parametry w wersji - szablonowe{{dk}} * Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność: # {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. ; Parametry w wersji - znacznikowe{{dk}} * Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów: # {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, # {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, # {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|komorka}} - przetwarzana komórka - linia, * {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana wartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> * {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, * {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu. Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). * {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy. Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznika: {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: ; Parametry podstawowe{{dk}} * Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. ; Inne parametry{{dk}} * {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lbs5isd9els819049jfpwvdnge9fxnc 556358 556332 2026-09-14T18:59:01Z Persino 2851 556358 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne. Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek. * Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego. Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU) ... return function() .... 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; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony, | 2 = Nazwy strony danego określonego spisu: | nagłówek2 = tak | 3 = {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}, | 4 = {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} | _4 = Czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe, | 5 = {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} | _5 = czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu, | 6 = Tablice wynikłe z zakodowanych zmiennych: | nagłówek6 = tak | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}, | 9 = Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:|nagłówek9 = tak | 10 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} | _10 = Funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość. | 11 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} | _11 = Funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału), | 12 = {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} | _12 = Funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = Funkcja nie przyjmuje żadnych parametrów. | nagłówek1 = tak }} Jednoczesne parametry zwracane przez funkcję zwracaną: {{OpisParametrów | 1 = {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} | _1 = To jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią. | 2 = {{Code|str}} {{Patrz|str}} | _2 = Tekst napisu wprowadzenia tekstu (zawartość rozdziału). | 3 = {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} | _3 = Poziom aktualnego rozdziału. | 4 = {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} | _4 = Przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału. | 5 = {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} | _5 = Numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}. | 6 = {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} | _6 = Przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym. }} === Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}. ==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ==== Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. ==== Szablony, projektów i tekstów, usuwane z tekstu ==== Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_do_usuwania_z_tekstu={ --- szablony książkowe umieszczane na stronie głównej podręcznika ["Kolekcja"]=true, ["TODO"]=true, ["Wersja do druku"]=true, --- szablony typowo linkowe ["Dane tekstu"]=true, --- szablony linkowania do innych projektow ["MediaWiki"]=true, ["Wikipedia"]=true, ["Wikipedia kat"]=true, ["Wikipedia2"]=true, ["Commons"]=true, ["Commons ilustr kat"]=true, ["Commonsall"]=true, ["Commonscat"]=true, ["Wikiatlas"]=true, ["Wikicytaty"]=true, ["Wikicytaty przysłowia"]=true, ["Inkubator"]=true, ["Meta"]=true, ["Wikinews"]=true, ["Wikinewscat"]=true, ["Wikinewsy"]=true, ["Portal Wikinews"]=true, ["Wikisłownik"]=true, ["Wikisłownik-cat"]=true, ["Wikimedia"]=true, ["Multiwmpl"]=true, ["Wikipodróże"]=true, ["Wikispecies"]=true, ["Multisource"]=true, ["Wikiźródła"]=true, ["Wikiźródła autor"]=true, ["Wikiźródła kat"]=true, ["Wikiźródła kuch kat"]=true, ["Wikiźródła krótki"]=true, ["Wikisource-lang"]=true, }; </syntaxhighlight> Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}. Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich. ==== Szablony, z których z których zostawiane są tylko zawartości ==== Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}. ==== Inne szablony usuwane z tekstu ==== Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}: <syntaxhighlight lang="lua"> p.szablony_bez_generowania_napisowego={ ["Status"]=true, }; </syntaxhighlight> Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu. Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}: <syntaxhighlight lang="lua"> p.szablony_nie_typowo_linkowe={ ["Plik"]=true, ["Kategoria"]=true, ["Kategorie"]=true, ["Wolumin"]=true, ["SortWolumin"]=true, ["SortKuchWolumin"]=true, }; </syntaxhighlight> Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika. ==== Znaczniki szablonowe ==== Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}: <syntaxhighlight lang="lua"> p.znaczniki_szablonowe={ ["Znacznik"]=1, ["Div"]=1, ["Code"]=1, ["Tt"]=1, ["P"]=1, ["Sub"]=1, ["Sup"]=1, ["Span"]=1, ["Bdo"]=1, ["Small"]=1, ["Big"]=1, ["Strong"]=1, }; </syntaxhighlight> Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to. ==== Szablony generujące poziomy o dowolnym poziomie ==== Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}: <syntaxhighlight lang="lua"> p.szablony_sztucznego_wprowadzenia_tekstu={ ["HNumer"]=1, }; </syntaxhighlight> Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}. ==== Magiczne derektywy ==== Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}: <syntaxhighlight lang="lua"> p.magiczne_derektywy={ ["TOC"]=true, ["NOTOC"]=true, ["NOEDITSECTION"]=true, }; </syntaxhighlight> ==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ==== Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={ ["spis treści"]=true, ["spis tresci"]=true, ["spis rzeczy"]=true, }; </syntaxhighlight> Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}. ==== Artykuły nieartykularne (okładki) ==== Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły. === Przykłady === Przykładowe użycia: <syntaxhighlight lang="lua"> local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local __FUNKCJA_PARAMETRY=nil; local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw) return nil; end; local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow) ... ---- Funkcja aktualnie nieużywana; local szablonowe_modul=require("Module:Szablonowe"); if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end; --- pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true); return tekst; end; local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek) ... return str; end; local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,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_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); return tekst; end; 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU); ---- iterator - iterator; ---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy; local parsuj_rozdzialami=nil; for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do ... --- Gdy tekst ma rozdziały iterowalne; if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end end; if(not parsuj_rozdzialami)then ... ---- Gdy tekst nie ma rozdziałów iterowalnych; end; </syntaxhighlight> === Opis dalszy funkcji === Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną. Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne. Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej. ==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ==== Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana. ===== Definicje potrzebnych funkcji do opisu działającego kodu ===== Przedstawiamy tutaj definicję lokalnych funkcji. ====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ====== Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieNowychLiniiZnacznikowe(szablon)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}. }} Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp). Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}. ====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ====== Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}: {{OpisParametrów | 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}. }} Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}. Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}. ====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ====== Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local Modyfikacja=function(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. |nagłówek1 = tak }} Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji. ====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ====== Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}. Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków. Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}. * W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło. * W innych zakresach funkcja nic nie zwraca. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end; </syntaxhighlight> Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}: {{OpisParametrów | 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. | komórka1 = tak | 2 = Parametry w wersji - szablonowe: | nagłówek2 = tak | 3 = Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:| komórka3 = tak | 4 = {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} | _4 = To nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika. | 5 = {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} | _5 = To nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika. | 6 = {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} | _6 = To nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. | 7 = Parametry w wersji - znacznikowe:| nagłówek7 = tak | 8 = Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:|komórka8 = tak | 9 = {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} | _9 = To nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika, | 10 = {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} | _10 = To nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika, | 11 = {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} | _11 = To nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika. }} Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}. ====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ====== Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii. ; Funkcja służy do tego{{dk}} * Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy, ** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego. * Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje. * Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|komorka}} | _1 = Przetwarzana komórka - linia, | 2 = {{Code|nie_trimowanie}} | _2 = Czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować. }} Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki|&nbsp;}}}}, {{Code|{{Nowiki|&#32;}}}} i {{Code|{{Nowiki|&#x20}}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować. Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp. Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana wartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}. ====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ====== Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}. Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''. Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function ZamienNaKody(zawartosc,czy_szablon)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} | _1 = Zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} | 2 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _2 = Czy zawartość modyfikowana jest od szablonu. }} Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}. Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio. Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie. ====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ====== Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}. ; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}} * Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, * Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,, ** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wzór}} {{Patrz|wzor}} | _1 = Wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy). | 2 = {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} | _2 = Czy linia reprezentuje rozdział dodatni równaniowy. }} Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}. Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznika: {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym. ===== Dalszy opis ===== Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. ====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ====== {{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module. {{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie. {{HNumer|1= ======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane ======= }} Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Parametry podstawowe: | nagłówek1 = tak | 2 = Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. | komórka2 = tak | 3 = Inne parametry: | nagłówek3 = tak | 4 = {{Code|tekst}} | _4 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}. }} Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie: * {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym, ** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane, ** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami. * {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu: ** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy. * {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami, * {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje, * {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek. ; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}} * Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''': ** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów, ** {{Tag|center}} - znaczniki centrowania, * {{s|HNumer}} - szablonu sztucznych rozdziałów, * {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków. : Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją. ; Szablony sztucznych nagłówków{{dk}} * {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta. ====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ====== Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. * Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego. ** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją. ** Ich elementy są zastępowane ich zawartościami. ; Inne obiekty * Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''. * Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}. ** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''. ====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ====== ; Modyfikacja obiektów typu szablonowego{{dk}} * Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia. * A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia. ; Typu znacznikowego{{dk}} * Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia. ; Teksty z czcionką o stałej szerokości{{dk}} * Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia. ; Specjalne obiekty{{dk}} * A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia. ==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ==== Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}. A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich. ==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ==== Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> eng3ob833lp18v7pb3gm932g54fqyf5 Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom I 4 63908 556343 554651 2026-09-14T16:17:55Z Persino 2851 556343 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Przedstawione sa tu funkcje do zbierania informacji o uchwycie. == {{Śródtytuł|p.UstawUchwytyWeTablicyBezNumeracji}}{{Code|p.UstawUchwytyWeTablicyBezNumeracji}} == Funkcja zbiera uchwyty, dla obiektów {{ZobaczTeż|p.UstawUchwytyWeTablicyBezNumeracji}}, bez numeracji, nie licząc obiektów tekstu, takich jak {{s|Śródtekst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} {{Patrz|self}} - zmienna obiektowa modułu {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}} {{Patrz|StronicowyParser/ZbieranieDanychStron}}, * {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - zmienna zbierająca takie kody jak {{LinkZobaczTeż|p.UstawUchwytyWeTablicyBezNumeracji}}, * {{Code|nazwa_obiektu}} {{Patrz|nazwa obiektu}} - nazwa obiektu, * {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} - pozycja w normalnej tabeli uchwytów i przeważnie ich numeracji, a tutaj dla tego obiektu, * {{Code|kod}} {{Patrz|kod}} - numer kodu dla tego obiektu. Funkcja zbiera elementy tablicy: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, w tablicy wielowymiarowej o pierwszym elemencie wymiaru o wartości: {{Code|nazwa obiektu}} {{LinkPatrz|nazwa obiektu}}, i trzecim o wartości: {{Code|kod}} {{LinkPatrz|kod}}, oraz o drugim: {{Code|uchwyty_bez_numeracji}} {{Patrz|uchwyty_bez_numeracji}}. Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}. == {{Śródtytuł|p.WydobywanieUchwytuZeTablicyBezNumeracji}}{{Code|p.WydobywanieUchwytuZeTablicyBezNumeracji}} == Funkcja wydowywa tablicę uchwytu dla pozycji, ale nie sam uchwyt, dla podtablicy: {{Code|uchwyty_bez_numeracji}} {{LinkPatrz|uchwyty_bez_numeracji}}, o danym kodzie: {{Code|kod}} {{LinkPatrz|kod}}, dla nazwy obiektu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tabela_elementow_strony_kodow}} - jak w: {{LinkPatrz|tabela_elementow_strony_kodow}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod}}. Funkcja wykorzystuje elementy tablicy: {{Code|uchwyty_bez_numeracji}} {{LinkPatrz|uchwyty_bez_numeracji}}, ustalane przez funkcję: {{LinkŚródtytuł|p.UstawUchwytyWeTablicyBezNumeracji}}, w tablicy: {{Code|tabela_elementow_strony_kodow}} {{LinkPatrz|tabela_elementow_strony_kodow}}. == {{Śródtytuł|p.RozpatrywanieElementuUchwytuNumeracji}}{{Code|p.RozpatrywanieElementuUchwytuNumeracji}} == Funkcja wsadzająca utworzoną tablicę z podanym uchwytem do ogólnej tablicy pozycji nazwanych tabel z uchwytami o danej pozycji z nim. Ta tablicą jest: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a własciwie do jej podtablicy o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, a jeszcze lepiej, w jego podtablicy o kluczu o wartości reprezentowanej przez: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} - kod uchwytu podanego do szablonu stronicowego z odpowiednim uchwytem, * {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica z numerkami ilości elementów w tablicy parametrów nazwanych z uchwytami, w danym elemencie analizowania strony z uchwytami i obiektami, * {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}} - tablica analizowania obiektów, danej strony, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki, nazwa książki i nazwa artykułu książki, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu}}, * {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy artykuł aktualny wyświetlany w przeglądarce, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa artykułu aktualna lub bieżąca, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy kodów parsowania strony, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica analizy poszczególnych elementów kodów, do szybszego działania skryptu, * {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tablica zbierająca odkodowany i rozwinięty uchwyt, do analizowania w nim zebranych kategorii, według modułu: {{Code|{{ld2|StronicowyParser/Kategorie}}}}, uruchamiana w szablonach stronicowych z funkcjami '''stronicowego parsera'''. Funkcja rozwija: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a potem je odkodowuje przy pomocy: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, a jeżeli ona nie jest pusta, to dla tego jest uruchamiana funkcja: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie}}. Tworzona jest tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, z uchwytem, jako pierwszy parametr. Jest sprawdzane, czy element: {{Code|tablica_zmiennych.sprawdzenie_dokonane_obiektu}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_obiektu}}, jest fałszywy, jeżeli tak, to dalej jest sprawdzane, czy są elementy numerowane nazwanej tablicy: {{Code|tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2}}, o nazwie: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, a jeżeli jest pusta - na samym końcu jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_obiektu}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_obiektu}}, czyli jest inicjowana na wartość: {{Code|true}}, to dalej jest sprawdzane, czy dla elementów: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy dana książka jest poza zakresem obsługiwanym, czyli rewidowane jest, czy jest ustawiony kod problemu: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, czy a jeżeli jednak nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}, ustawiające pewne elementy błędu, jeżeli trzeba to zrobić. Gdy tabela: {{Code|tab_numer}} {{LinkPatrz|tab_numer}}, odpowiada nienilowej tablicy, wtedy element: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, jest wstawiany na odpowiedniej pozycji, ale przeważnie nie na końcu, przy pomocy funkcji: {{LzLua|table.insert}}, dzięki określonej tabeli: {{Code|tab_numer}} {{LinkPatrz|tab_numer}}, przeciwnie na jej końcu. Funkcja zwraca element tablicowy: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}. Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}. == {{Śródtytuł|p.RozpatrywanieSzablonuObiektuDoNumeracji}}{{Code|p.RozpatrywanieSzablonuObiektuDoNumeracji}} == Funkcja, która uruchamia funkcję: {{LinkŚródtytuł|p.RozpatrywanieElementuUchwytuNumeracji}} {{Patrz|p.RozpatrywanieElementuUchwytuNumeracji}}, dla istniejącego uchwytu w postaci nazwanej o kluczu: {{Code|uchwyt}} {{Patrz|uchwyt}}, lub nienazwanej - w postaci numeru jego uchwytu o kluczu o wartości zmiennej: {{Code|numer_numeracji}} {{Patrz|numer_numeracji}}. Funkcja ta wsadza tabele z uchwytem na odpowiednią pozycję w odpowiedniej nazwanej tabeli o nazwie obiektu o wartości: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, w ogólnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Dokładniej własciwie w tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, do jej podtablicy o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki2}}, a jeszcze lepiej, w jego podtablicy o kluczu o wartości reprezentowanej przez: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}. To jest robione poprzez funkcję: {{LinkPatrz|p.RozpatrywanieElementuUchwytuNumeracji}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self}}, * {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}}- tabela parametrów szablonu, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu}}, * {{Code|czy_artykul_korzystany}} - jak w: {{LinkPatrz|czy_artykul_korzystany}}, * {{Code|numer_numeracji}} - jak w: {{LinkPatrz|numer_numeracji}}, * {{Code|tab_numer}} - jak w: {{LinkPatrz|tab_numer}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, * {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie}}. Funkcja zwraca wartość: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, którą jest pewna tablica, uzyskaną z wywołania funkcji: {{LinkPatrz|p.RozpatrywanieElementuUchwytuNumeracji}}. Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 28z2wgpt5odzpcueru2dwfr9r0uq4th 556346 556343 2026-09-14T17:13:58Z Persino 2851 556346 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Przedstawione sa tu funkcje do zbierania informacji o uchwycie. == {{Śródtytuł|p.UstawUchwytyWeTablicyBezNumeracji}}{{Code|p.UstawUchwytyWeTablicyBezNumeracji}} == Funkcja zbiera uchwyty, dla obiektów {{ZobaczTeż|p.UstawUchwytyWeTablicyBezNumeracji}}, bez numeracji, nie licząc obiektów tekstu, takich jak {{s|Śródtekst}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa modułu {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}} {{Patrz|StronicowyParser/ZbieranieDanychStron}}. | 2 = {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} | _2 = Zmienna zbierająca takie kody jak {{LinkZobaczTeż|p.UstawUchwytyWeTablicyBezNumeracji}}. | 3 = {{Code|nazwa_obiektu}} {{Patrz|nazwa obiektu}} | _3 = Nazwa obiektu. | 4 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _4 = Pozycja w normalnej tabeli uchwytów i przeważnie ich numeracji, a tutaj dla tego obiektu. | 5 = {{Code|kod}} {{Patrz|kod}} | _5 = Numer kodu dla tego obiektu. }} Funkcja zbiera elementy tablicy: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, w tablicy wielowymiarowej o pierwszym elemencie wymiaru o wartości: {{Code|nazwa obiektu}} {{LinkPatrz|nazwa obiektu}}, i trzecim o wartości: {{Code|kod}} {{LinkPatrz|kod}}, oraz o drugim: {{Code|uchwyty_bez_numeracji}} {{Patrz|uchwyty_bez_numeracji}}. Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}. == {{Śródtytuł|p.WydobywanieUchwytuZeTablicyBezNumeracji}}{{Code|p.WydobywanieUchwytuZeTablicyBezNumeracji}} == Funkcja wydowywa tablicę uchwytu dla pozycji, ale nie sam uchwyt, dla podtablicy: {{Code|uchwyty_bez_numeracji}} {{LinkPatrz|uchwyty_bez_numeracji}}, o danym kodzie: {{Code|kod}} {{LinkPatrz|kod}}, dla nazwy obiektu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. | 2 = {{Code|tabela_elementow_strony_kodow}} | _2 = Jak w: {{LinkPatrz|tabela_elementow_strony_kodow}}. | 3 = {{Code|nazwa_obiektu}} | _3 = Jak w: {{LinkPatrz|nazwa_obiektu}}. | 4 = {{Code|kod}} | _4 = Jak w: {{LinkPatrz|kod}}. }} Funkcja wykorzystuje elementy tablicy: {{Code|uchwyty_bez_numeracji}} {{LinkPatrz|uchwyty_bez_numeracji}}, ustalane przez funkcję: {{LinkŚródtytuł|p.UstawUchwytyWeTablicyBezNumeracji}}, w tablicy: {{Code|tabela_elementow_strony_kodow}} {{LinkPatrz|tabela_elementow_strony_kodow}}. == {{Śródtytuł|p.RozpatrywanieElementuUchwytuNumeracji}}{{Code|p.RozpatrywanieElementuUchwytuNumeracji}} == Funkcja wsadzająca utworzoną tablicę z podanym uchwytem do ogólnej tablicy pozycji nazwanych tabel z uchwytami o danej pozycji z nim. Ta tablicą jest: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a własciwie do jej podtablicy o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, a jeszcze lepiej, w jego podtablicy o kluczu o wartości reprezentowanej przez: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. | 2 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _2 = Kod uchwytu podanego do szablonu stronicowego z odpowiednim uchwytem. | 3 = {{Code|tab_numer}} {{Patrz|tab_numer}} | _3 = Tablica z numerkami ilości elementów w tablicy parametrów nazwanych z uchwytami, w danym elemencie analizowania strony z uchwytami i obiektami. | 4 = {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}} | _4 = Tablica analizowania obiektów, danej strony. | 5 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} | _5 = Kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki, nazwa książki i nazwa artykułu książki. | 6 = {{Code|nazwa_obiektu}} | _6 = Jak w: {{LinkPatrz|nazwa_obiektu}}. | 7 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _7 = Czy artykuł aktualny wyświetlany w przeglądarce. | 8 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _8 = Nazwa artykułu aktualna lub bieżąca. | 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Tablica bazy kodów parsowania strony. | 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _10 = Tablica analizy poszczególnych elementów kodów, do szybszego działania skryptu. | 11 = {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} | _11 = Tablica zbierająca odkodowany i rozwinięty uchwyt, do analizowania w nim zebranych kategorii, według modułu: {{Code|{{ld2|StronicowyParser/Kategorie}}}}, uruchamiana w szablonach stronicowych z funkcjami '''stronicowego parsera'''. }} Funkcja rozwija: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a potem je odkodowuje przy pomocy: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, a jeżeli ona nie jest pusta, to dla tego jest uruchamiana funkcja: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie}}. Tworzona jest tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, z uchwytem, jako pierwszy parametr. Jest sprawdzane, czy element: {{Code|tablica_zmiennych.sprawdzenie_dokonane_obiektu}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_obiektu}}, jest fałszywy, jeżeli tak, to dalej jest sprawdzane, czy są elementy numerowane nazwanej tablicy: {{Code|tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2}}, o nazwie: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, a jeżeli jest pusta - na samym końcu jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_obiektu}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_obiektu}}, czyli jest inicjowana na wartość: {{Code|true}}, to dalej jest sprawdzane, czy dla elementów: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy dana książka jest poza zakresem obsługiwanym, czyli rewidowane jest, czy jest ustawiony kod problemu: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, czy a jeżeli jednak nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}, ustawiające pewne elementy błędu, jeżeli trzeba to zrobić. Gdy tabela: {{Code|tab_numer}} {{LinkPatrz|tab_numer}}, odpowiada nienilowej tablicy, wtedy element: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, jest wstawiany na odpowiedniej pozycji, ale przeważnie nie na końcu, przy pomocy funkcji: {{LzLua|table.insert}}, dzięki określonej tabeli: {{Code|tab_numer}} {{LinkPatrz|tab_numer}}, przeciwnie na jej końcu. Funkcja zwraca element tablicowy: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}. Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}. == {{Śródtytuł|p.RozpatrywanieSzablonuObiektuDoNumeracji}}{{Code|p.RozpatrywanieSzablonuObiektuDoNumeracji}} == Funkcja, która uruchamia funkcję: {{LinkŚródtytuł|p.RozpatrywanieElementuUchwytuNumeracji}} {{Patrz|p.RozpatrywanieElementuUchwytuNumeracji}}, dla istniejącego uchwytu w postaci nazwanej o kluczu: {{Code|uchwyt}} {{Patrz|uchwyt}}, lub nienazwanej - w postaci numeru jego uchwytu o kluczu o wartości zmiennej: {{Code|numer_numeracji}} {{Patrz|numer_numeracji}}. Funkcja ta wsadza tabele z uchwytem na odpowiednią pozycję w odpowiedniej nazwanej tabeli o nazwie obiektu o wartości: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, w ogólnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}. Dokładniej własciwie w tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, do jej podtablicy o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki2}}, a jeszcze lepiej, w jego podtablicy o kluczu o wartości reprezentowanej przez: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}. To jest robione poprzez funkcję: {{LinkPatrz|p.RozpatrywanieElementuUchwytuNumeracji}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}. | 2 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _2 = Tabela parametrów szablonu. | 3 = {{Code|tablica_zmiennych}} | _3 = Jak w: {{LinkPatrz|tablica_zmiennych}}. | 4 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _4 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}. | 5 = {{Code|nazwa_obiektu}} | _5 = Jak w: {{LinkPatrz|nazwa_obiektu}}. | 6 = {{Code|czy_artykul_korzystany}} | _6 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}. | 7 = {{Code|numer_numeracji}} | _7 = Jak w: {{LinkPatrz|numer_numeracji}}. | 8 = {{Code|tab_numer}} | _8 = Jak w: {{LinkPatrz|tab_numer}}. | 9 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _9 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}. | 10 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _10 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}. | 11 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _11 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. | 12 = {{Code|KtorySzablonMaZwracacKategorie}} | _12 = Jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie}}. }} Funkcja zwraca wartość: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, którą jest pewna tablica, uzyskaną z wywołania funkcji: {{LinkPatrz|p.RozpatrywanieElementuUchwytuNumeracji}}. Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> b68p4eq1epunhyw3xigntaf83dymyt6 Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom II 4 63909 556337 554654 2026-09-14T15:45:59Z Persino 2851 /* {{Śródtytuł|p.SzablonyReferencjiParametrowych}}{{Code|p.SzablonyReferencjiParametrowych}} */ 556337 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji}}{{Code|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji}} == Funkcja sprawdza, czy dany artykuł należy do artykułów, któregoś spisu treści, a jeżeli nie, to dla stron, które nie należą do kategorii z ustawionym problemem: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, ale do nieaktualnej strony jest ustawiony problem: {{Code|brak spisów treści do dołączonych stron}} {{Code|brak spisów treści do dołączonych stron}} {{Patrz|brak spisów treści do dołączonych stron}}. Natomiast dla aktualnej dla stron tej samej kategorii ustawiany jest problem: {{Code|brak spisu treści do korzystanych stron}} {{Patrz|brak spisu treści do korzystanych stron}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. == {{Śródtytuł|p.PusteParametryReferencji}}{{Code|p.PusteParametryReferencji}} == Funkcja sprawdza, jeśli są podane parametry szablonu stronicowego, które są w kategorii: {{lk|Szablony stronicowe}}, czyli: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, ewentualnie: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, ale zawsze z: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, czy są one puste. A jeżeli one istnieją i są takie, to są ustawione problemy typu, jeśli ich wcześniej nie ustawiono: * {{Code|puste parametry szablonów stronicowych linkujących}} {{Patrz|puste parametry szablonów stronicowych linkujących}}, kolejno dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, kolejno z numerami problemów: {{Code|1}}, {{Code|2}} i {{Code|3}}. Dla obiektu o nazwie: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. {{Hr}} Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)...end; </syntaxhighlight> Paraametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}} - uchwyt obiektu, podane w danym szablonie stronicowym, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. == {{Śródtytuł|p.SzablonyReferencjiParametrowych}}{{Code|p.SzablonyReferencjiParametrowych}} == Funkcja z parametrów pudełkowych nazwy artykułu {{ZobaczTeż|nazwa artykułu}}: {{Code|nazwa artykułu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, albo {{Code|1}}, gdy bezuchwytowe lub {{Code|2}}, i pełnej nazwy książki {{ZobaczTeż|pełna nazwa strony}}: {{Code|nazwa książki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} albo, {{Code|2}}, gdy bezuchwytowe lub {{Code|3}}. To wszystko jest liczone z: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, lub przy użyciu parametru również: {{Code|bezuchwytowe}} {{Patrz|bezuchwytowe}}, gdy mamy szablon stronicowy {{lk|Szablony stronicowe}}, bezuchwytowy, wtedy {{Code|true}}, przeciwnie {{Code|false/nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|bezuchwytowe}} - jak w: {{LinkPatrz|bezuchwytowe}}. Funkcja uzyskane obie nazwy książkowe dekoduje funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, a później jest liczony adres bezwzględny podręcznika ze względnego dzięki: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, przy pomocy podstawy: {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, podobnie, ale wcześniej jest liczona nazwa artykułu {{LinkZobaczTeż|nazwa artykułu}}, czyli: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, ale tutaj adres względny jest liczony z podstawy o ciągu pustym jako drugi parametr. Na podstawie pełnej nazwy książki {{LinkZobaczTeż|pełna nazwa strony}}: jest liczona bardziej jej wersja pełniejsza, jeżeli to jest w ogóle możliwe z: {{Code|{{sr|#p["PełnaNazwaStronicowejKsiążki"]|p=Książkowe}}}}. A póżniej z tego wszystkiego są liczone nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy funkcji nazw: {{Code|{{ld2|Nazwy}}}}. Na samym końcu funkcji są zwracane parametry nazw, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5juyk24jlry4bgb0cx3g2vbfxltxp51 556347 556337 2026-09-14T17:18:04Z Persino 2851 556347 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji}}{{Code|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji}} == Funkcja sprawdza, czy dany artykuł należy do artykułów, któregoś spisu treści, a jeżeli nie, to dla stron, które nie należą do kategorii z ustawionym problemem: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, ale do nieaktualnej strony jest ustawiony problem: {{Code|brak spisów treści do dołączonych stron}} {{Code|brak spisów treści do dołączonych stron}} {{Patrz|brak spisów treści do dołączonych stron}}. Natomiast dla aktualnej dla stron tej samej kategorii ustawiany jest problem: {{Code|brak spisu treści do korzystanych stron}} {{Patrz|brak spisu treści do korzystanych stron}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _2 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. }} == {{Śródtytuł|p.PusteParametryReferencji}}{{Code|p.PusteParametryReferencji}} == Funkcja sprawdza, jeśli są podane parametry szablonu stronicowego, które są w kategorii: {{lk|Szablony stronicowe}}, czyli: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, ewentualnie: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, ale zawsze z: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, czy są one puste. A jeżeli one istnieją i są takie, to są ustawione problemy typu, jeśli ich wcześniej nie ustawiono: * {{Code|puste parametry szablonów stronicowych linkujących}} {{Patrz|puste parametry szablonów stronicowych linkujących}}, kolejno dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, kolejno z numerami problemów: {{Code|1}}, {{Code|2}} i {{Code|3}}. Dla obiektu o nazwie: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. {{Hr}} Definicja skrótowa funkcji <syntaxhighlight lang="lua"> function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)...end; </syntaxhighlight> Paraametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 3 = {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}} | _3 = Uchwyt obiektu, podane w danym szablonie stronicowym. | 4 = {{Code|nazwa_obiektu}} | _4 = Jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. }} == {{Śródtytuł|p.SzablonyReferencjiParametrowych}}{{Code|p.SzablonyReferencjiParametrowych}} == Funkcja z parametrów pudełkowych nazwy artykułu {{ZobaczTeż|nazwa artykułu}}: {{Code|nazwa artykułu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, albo {{Code|1}}, gdy bezuchwytowe lub {{Code|2}}, i pełnej nazwy książki {{ZobaczTeż|pełna nazwa strony}}: {{Code|nazwa książki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} albo, {{Code|2}}, gdy bezuchwytowe lub {{Code|3}}. To wszystko jest liczone z: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, lub przy użyciu parametru również: {{Code|bezuchwytowe}} {{Patrz|bezuchwytowe}}, gdy mamy szablon stronicowy {{lk|Szablony stronicowe}}, bezuchwytowy, wtedy {{Code|true}}, przeciwnie {{Code|false/nil}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 3 = {{Code|bezuchwytowe}} | _3 = Jak w: {{LinkPatrz|bezuchwytowe}}. }} Funkcja uzyskane obie nazwy książkowe dekoduje funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, a później jest liczony adres bezwzględny podręcznika ze względnego dzięki: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, przy pomocy podstawy: {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, podobnie, ale wcześniej jest liczona nazwa artykułu {{LinkZobaczTeż|nazwa artykułu}}, czyli: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, ale tutaj adres względny jest liczony z podstawy o ciągu pustym jako drugi parametr. Na podstawie pełnej nazwy książki {{LinkZobaczTeż|pełna nazwa strony}}: jest liczona bardziej jej wersja pełniejsza, jeżeli to jest w ogóle możliwe z: {{Code|{{sr|#p["PełnaNazwaStronicowejKsiążki"]|p=Książkowe}}}}. A póżniej z tego wszystkiego są liczone nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy funkcji nazw: {{Code|{{ld2|Nazwy}}}}. Na samym końcu funkcji są zwracane parametry nazw, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nr4a5ey6e2o222cfnoaybp02aj69pac Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom III 4 63910 556338 554661 2026-09-14T15:48:06Z Persino 2851 /* {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} */ 556338 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Tutaj są przedstawione inne funkcje do zbierania informacji o projekcie. == {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} == Funkcja zbierania informacji na stronie dla szablonów stronicowych: {{lk|Szablony stronicowe}}, bezuchwytowych, ale nie kontenerowych. Gdy parametr nie ma wartości, lub ma wartość fałszywą: {{Code|czy_inna_wartosc_tekst}} {{Patrz|czy_inna_wartosc_tekst}}, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}, która liczy kolejne nazwy charaktertyzujące nazwy dla danego artykułu książki dla danej strony, przeciwnie parametry nazw są ściagane z: {{Code|tab_nazwy}} {{Patrz|tab_nazwy}}, ta tabela składa się numerowanych elementów, którymi są nazwy charakyteryzujące stronę. Gdy jakaś nazwa artylułu strony została policzona, wtedy są liczone pozostałe nazwy z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} - ona słuzy do zbierania informacji o stronie, a tuż przed nim, jeśli istnieje: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_inna_wartosc_tekst}} - jak w: {{LinkPatrz|czy_inna_wartosc_tekst}}, * {{Code|tab_nazwy}} - jak w: {{LinkPatrz|tab_nazwy}}. == {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} == Funkcja do zbierania informacji, która z parametrów pudełkowych: {{Code|{{m|Pudełko}}}}, czyli: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}} i {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, z nich są liczone parametry nazw charakteryzujące artykuł książki strony. A na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI}} {{Patrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}. Funkcja służy do analizy szablonów kontenerowych, na podstawie jego parametrów pudełkowych modułu: {{Code|{{m|Szablonowe}}}}, tzn. {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}} (przestrzeń, w której mieśści się strona) i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}} (nazwa strony). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{Patrz|czy_szablon_pudelkowy_strony_zbiorczej}} - funkcja potrzebna do funkcji zbierającej {{LinkPatrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}, określającej, czy mamy szablon pudełkowy strony zbiorczej, taki jak: {{Code|{{s|StronaSubst}}}}, czy: {{Code|{{s|KsiążkaSubst}}}}, zobacz stronę: {{Code|{{lr2|Moduły/StronicowyParser/StronaSubst}}}}, * {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. Gdy nie ma parametrów pudełkowych funkcja się natychmiast zakańcza, lub parametr: {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, jest pusta, lub nawet gdy zawierają kody wykrywane przez funkcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}. Z nazwy jednostki jest wydzielana nazwa jednostki właściwa bez nazwy nagłówka, póżniej obie nazwy są też dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, czyli wszystko z: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}. Z tych dwóch nazwy jest liczony adres, ewentualnie względny, który za pomocą funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jest wyliczany adres bezwzględny. Dalej są liczone nazwy charakteryzujące artykuł danej książki strony, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, z tego adresu strony. Przedostatnia funkcja, która jest uruchamiana przed funkcją zbierającą jest: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli istnieje. == {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} == Funkcja zbiera informacje o stronie. Na podstawie informacji o nazwie artykułu i pełnej nazwy książki liczy parametry nazw charakteryzujące artykuł, co na tej podstawiwe liczy parametry pudełkowe i wywołuje funkcję główną przez inną funkcję, też zbierającą, i zbiera informacje o artykule. Funkcję wykorzystuje się przy analizie linków, jeśli chcemy, by ładowana strona inna niż bieżąca, w której miesci się ten link, została przeanalizowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jako parametry zwracane przez funkcję: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. Funkcja wyznacza parametry pudełkowe {{m|Pudełko}}, tzn.: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, na podstawie tych nazw. Funkcja na samym końcu wywołuje funkcję zbierającą dane ze strony: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}} (z uwzględnieniem parametru: {{Code|tab_nazwy}} {{LinkPatrz|tab_nazwy}}), która z kolei w niej jest uruchamiana procedura zwracająca wartość, czyli: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4zmvchne1zmjxvoqy0gx0co05qpoudo 556339 556338 2026-09-14T15:49:07Z Persino 2851 /* {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} */ 556339 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Tutaj są przedstawione inne funkcje do zbierania informacji o projekcie. == {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} == Funkcja zbierania informacji na stronie dla szablonów stronicowych: {{lk|Szablony stronicowe}}, bezuchwytowych, ale nie kontenerowych. Gdy parametr nie ma wartości, lub ma wartość fałszywą: {{Code|czy_inna_wartosc_tekst}} {{Patrz|czy_inna_wartosc_tekst}}, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}, która liczy kolejne nazwy charaktertyzujące nazwy dla danego artykułu książki dla danej strony, przeciwnie parametry nazw są ściagane z: {{Code|tab_nazwy}} {{Patrz|tab_nazwy}}, ta tabela składa się numerowanych elementów, którymi są nazwy charakyteryzujące stronę. Gdy jakaś nazwa artylułu strony została policzona, wtedy są liczone pozostałe nazwy z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} - ona słuzy do zbierania informacji o stronie, a tuż przed nim, jeśli istnieje: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_inna_wartosc_tekst}} - jak w: {{LinkPatrz|czy_inna_wartosc_tekst}}, * {{Code|tab_nazwy}} - jak w: {{LinkPatrz|tab_nazwy}}. == {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} == Funkcja do zbierania informacji, która z parametrów pudełkowych: {{Code|{{m|Pudełko}}}}, czyli: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}} i {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, z nich są liczone parametry nazw charakteryzujące artykuł książki strony. A na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} {{Patrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}. Funkcja służy do analizy szablonów kontenerowych, na podstawie jego parametrów pudełkowych modułu: {{Code|{{m|Szablonowe}}}}, tzn. {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}} (przestrzeń, w której mieśści się strona) i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}} (nazwa strony). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{Patrz|czy_szablon_pudelkowy_strony_zbiorczej}} - funkcja potrzebna do funkcji zbierającej {{LinkPatrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}, określającej, czy mamy szablon pudełkowy strony zbiorczej, taki jak: {{Code|{{s|StronaSubst}}}}, czy: {{Code|{{s|KsiążkaSubst}}}}, zobacz stronę: {{Code|{{lr2|Moduły/StronicowyParser/StronaSubst}}}}, * {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. Gdy nie ma parametrów pudełkowych funkcja się natychmiast zakańcza, lub parametr: {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, jest pusta, lub nawet gdy zawierają kody wykrywane przez funkcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}. Z nazwy jednostki jest wydzielana nazwa jednostki właściwa bez nazwy nagłówka, póżniej obie nazwy są też dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, czyli wszystko z: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}. Z tych dwóch nazwy jest liczony adres, ewentualnie względny, który za pomocą funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jest wyliczany adres bezwzględny. Dalej są liczone nazwy charakteryzujące artykuł danej książki strony, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, z tego adresu strony. Przedostatnia funkcja, która jest uruchamiana przed funkcją zbierającą jest: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli istnieje. == {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} == Funkcja zbiera informacje o stronie. Na podstawie informacji o nazwie artykułu i pełnej nazwy książki liczy parametry nazw charakteryzujące artykuł, co na tej podstawiwe liczy parametry pudełkowe i wywołuje funkcję główną przez inną funkcję, też zbierającą, i zbiera informacje o artykule. Funkcję wykorzystuje się przy analizie linków, jeśli chcemy, by ładowana strona inna niż bieżąca, w której miesci się ten link, została przeanalizowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jako parametry zwracane przez funkcję: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. Funkcja wyznacza parametry pudełkowe {{m|Pudełko}}, tzn.: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, na podstawie tych nazw. Funkcja na samym końcu wywołuje funkcję zbierającą dane ze strony: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}} (z uwzględnieniem parametru: {{Code|tab_nazwy}} {{LinkPatrz|tab_nazwy}}), która z kolei w niej jest uruchamiana procedura zwracająca wartość, czyli: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1z19duiozc0xj49w321asb886sf98b4 556340 556339 2026-09-14T15:49:55Z Persino 2851 /* {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} */ 556340 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Tutaj są przedstawione inne funkcje do zbierania informacji o projekcie. == {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} == Funkcja zbierania informacji na stronie dla szablonów stronicowych: {{lk|Szablony stronicowe}}, bezuchwytowych, ale nie kontenerowych. Gdy parametr nie ma wartości, lub ma wartość fałszywą: {{Code|czy_inna_wartosc_tekst}} {{Patrz|czy_inna_wartosc_tekst}}, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}, która liczy kolejne nazwy charaktertyzujące nazwy dla danego artykułu książki dla danej strony, przeciwnie parametry nazw są ściagane z: {{Code|tab_nazwy}} {{Patrz|tab_nazwy}}, ta tabela składa się numerowanych elementów, którymi są nazwy charakyteryzujące stronę. Gdy jakaś nazwa artylułu strony została policzona, wtedy są liczone pozostałe nazwy z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} - ona słuzy do zbierania informacji o stronie, a tuż przed nim, jeśli istnieje: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_inna_wartosc_tekst}} - jak w: {{LinkPatrz|czy_inna_wartosc_tekst}}, * {{Code|tab_nazwy}} - jak w: {{LinkPatrz|tab_nazwy}}. == {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} == Funkcja do zbierania informacji, która z parametrów pudełkowych: {{Code|{{m|Pudełko}}}}, czyli: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}} i {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, z nich są liczone parametry nazw charakteryzujące artykuł książki strony. A na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} {{Patrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}. Funkcja służy do analizy szablonów kontenerowych, na podstawie jego parametrów pudełkowych modułu: {{Code|{{m|Szablonowe}}}}, tzn. {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}} (przestrzeń, w której mieśści się strona) i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}} (nazwa strony). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{Patrz|czy_szablon_pudelkowy_strony_zbiorczej}} - funkcja potrzebna do funkcji zbierającej {{LinkPatrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}, określającej, czy mamy szablon pudełkowy strony zbiorczej, taki jak: {{Code|{{s|StronaSubst}}}}, czy: {{Code|{{s|KsiążkaSubst}}}}, zobacz stronę: {{Code|{{lr2|Moduły/StronicowyParser/StronaSubst}}}}, * {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. Gdy nie ma parametrów pudełkowych funkcja się natychmiast zakańcza, lub parametr: {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, jest pusta, lub nawet gdy zawierają kody wykrywane przez funkcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}. Z nazwy jednostki jest wydzielana nazwa jednostki właściwa bez nazwy nagłówka, póżniej obie nazwy są też dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, czyli wszystko z: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}. Z tych dwóch nazwy jest liczony adres, ewentualnie względny, który za pomocą funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jest wyliczany adres bezwzględny. Dalej są liczone nazwy charakteryzujące artykuł danej książki strony, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, z tego adresu strony. Przedostatnia funkcja, która jest uruchamiana przed funkcją zbierającą jest: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli istnieje. == {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} == Funkcja zbiera informacje o stronie. Na podstawie informacji o nazwie artykułu i pełnej nazwy książki liczy parametry nazw charakteryzujące artykuł, co na tej podstawiwe liczy parametry pudełkowe i wywołuje funkcję główną przez inną funkcję, też zbierającą, i zbiera informacje o artykule. Funkcję wykorzystuje się przy analizie linków, jeśli chcemy, by ładowana strona inna niż bieżąca, w której miesci się ten link, została przeanalizowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jako parametry zwracane przez funkcję: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. Funkcja wyznacza parametry pudełkowe {{m|Pudełko}}, tzn.: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, na podstawie tych nazw. Funkcja na samym końcu wywołuje funkcję zbierającą dane ze strony: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}} (z uwzględnieniem parametru: {{Code|tab_nazwy}} {{LinkPatrz|tab_nazwy}}), która z kolei w niej jest uruchamiana procedura zwracająca wartość, czyli: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ep90r4fk24mj43c16s3yi106342cmgw 556348 556340 2026-09-14T17:22:13Z Persino 2851 556348 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Tutaj są przedstawione inne funkcje do zbierania informacji o projekcie. == {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} == Funkcja zbierania informacji na stronie dla szablonów stronicowych: {{lk|Szablony stronicowe}}, bezuchwytowych, ale nie kontenerowych. Gdy parametr nie ma wartości, lub ma wartość fałszywą: {{Code|czy_inna_wartosc_tekst}} {{Patrz|czy_inna_wartosc_tekst}}, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}, która liczy kolejne nazwy charaktertyzujące nazwy dla danego artykułu książki dla danej strony, przeciwnie parametry nazw są ściagane z: {{Code|tab_nazwy}} {{Patrz|tab_nazwy}}, ta tabela składa się numerowanych elementów, którymi są nazwy charakyteryzujące stronę. Gdy jakaś nazwa artylułu strony została policzona, wtedy są liczone pozostałe nazwy z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} - ona słuzy do zbierania informacji o stronie, a tuż przed nim, jeśli istnieje: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 3 = {{Code|KtorySzablonMaZwracacKategorie}} | _3 = Jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 4 = {{Code|czy_inna_wartosc_tekst}} | _4 = Jak w: {{LinkPatrz|czy_inna_wartosc_tekst}}. | 5 = {{Code|tab_nazwy}} | _5 = Jak w: {{LinkPatrz|tab_nazwy}}. }} == {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} == Funkcja do zbierania informacji, która z parametrów pudełkowych: {{Code|{{m|Pudełko}}}}, czyli: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}} i {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, z nich są liczone parametry nazw charakteryzujące artykuł książki strony. A na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} {{Patrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}. Funkcja służy do analizy szablonów kontenerowych, na podstawie jego parametrów pudełkowych modułu: {{Code|{{m|Szablonowe}}}}, tzn. {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}} (przestrzeń, w której mieśści się strona) i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}} (nazwa strony). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 3 = {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{Patrz|czy_szablon_pudelkowy_strony_zbiorczej}} | _3 = funkcja potrzebna do funkcji zbierającej {{LinkPatrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}, określającej, czy mamy szablon pudełkowy strony zbiorczej, taki jak: {{Code|{{s|StronaSubst}}}}, czy: {{Code|{{s|KsiążkaSubst}}}}, zobacz stronę: {{Code|{{lr2|Moduły/StronicowyParser/StronaSubst}}}}. | 4 = {{Code|KtorySzablonMaZwracacKategorie}} | _4 = Jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. }} Gdy nie ma parametrów pudełkowych funkcja się natychmiast zakańcza, lub parametr: {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, jest pusta, lub nawet gdy zawierają kody wykrywane przez funkcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}. Z nazwy jednostki jest wydzielana nazwa jednostki właściwa bez nazwy nagłówka, póżniej obie nazwy są też dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, czyli wszystko z: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}. Z tych dwóch nazwy jest liczony adres, ewentualnie względny, który za pomocą funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jest wyliczany adres bezwzględny. Dalej są liczone nazwy charakteryzujące artykuł danej książki strony, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, z tego adresu strony. Przedostatnia funkcja, która jest uruchamiana przed funkcją zbierającą jest: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli istnieje. == {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} == Funkcja zbiera informacje o stronie. Na podstawie informacji o nazwie artykułu i pełnej nazwy książki liczy parametry nazw charakteryzujące artykuł, co na tej podstawiwe liczy parametry pudełkowe i wywołuje funkcję główną przez inną funkcję, też zbierającą, i zbiera informacje o artykule. Funkcję wykorzystuje się przy analizie linków, jeśli chcemy, by ładowana strona inna niż bieżąca, w której miesci się ten link, została przeanalizowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}. }} Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jako parametry zwracane przez funkcję: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. Funkcja wyznacza parametry pudełkowe {{m|Pudełko}}, tzn.: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, na podstawie tych nazw. Funkcja na samym końcu wywołuje funkcję zbierającą dane ze strony: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}} (z uwzględnieniem parametru: {{Code|tab_nazwy}} {{LinkPatrz|tab_nazwy}}), która z kolei w niej jest uruchamiana procedura zwracająca wartość, czyli: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3b93wthjn27e4ayj1gza27hbfk5c0xm Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom IV 4 63911 556349 554499 2026-09-14T17:24:43Z Persino 2851 556349 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony}}{{Code|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony}} == Funkcja sprawdza niepoprawność nazwy strony i na podstawie tego ustawia pewne kody problemów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|nazwa_obiektu}} | _2 = Jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 3 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _3 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 4 = {{Code|uchwyt_obiektu}} | _4 = Jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 5 = {{Code|__FUNKCJA_SPRAWDZANIE}} {{Patrz|__FUNKCJA_SPRAWDZANIE}} | _5 = Funkcja uruchamiana, jeśli jest ustawiona, na wypadek poprawności strony. }} W przypadku niepoprawności strony, gdy strona modułu jest aktualna (bieżąca), wtedy sprawdzany jest kod problemu, czy jest ustawiony, tzn.: {{Code|nieprawidłowe nazwy korzystanych stron}} {{Patrz|nieprawidłowe nazwy korzystanych stron}}, przy pomocy funkcji: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli nie ma takiego, to wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. Podobnie jest dla niekorzystanej strony, wtedy jest problem dla kodu: {{Code|nieprawidłowe nazwy stron dołączanych do stron}} {{Patrz|nieprawidłowe nazwy stron dołączanych do stron}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bpds6nfyb0a8baq80iu93t9mn7bqq0s Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom V 4 63912 556344 554670 2026-09-14T16:53:30Z Persino 2851 /* {{Śródtytuł|p.LinkowanieFinalizowaniePrac}}{{Code|p.LinkowanieFinalizowaniePrac}} */ 556344 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje zbieranie informacji o linkach na stronie. == {{Śródtytuł|p.LinkowanieFinalizowaniePrac}}{{Code|p.LinkowanieFinalizowaniePrac}} == Funkcja wsadza uchwyt obiektu, wskazujący na aktualną stronę, do pewnej tablicy, ściśle: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, i ewentualnie ustawia pewne problemy, jeśli je nie ustawiono. Funkcja dla tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, dla jego podtablicy: {{Code|linkobiekt}} {{Patrz|linkobiekt}} (jest to tablica, w której są zbierane w różnych podtablicach, w zależności od obiektu, uchwyty różnych linków na bieżącej stronie), w jego podtablicy o wartości elementu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, co taka tablica, to nic innego jak obiekt: {{Code|linkobiekttab}} {{Patrz|linkobiekttab}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt, obsługiwany przez tą funkcję linku, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}} - kod obiektu dla: {{LinkPatrz|obiekt}}, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|uchwyt_obiektu}} - jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_pobierz}} {{Patrz|czy_pobierz}} - czy to jest szablon typu {{Code|Pobierz}} {{Patrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. Funkcja sprawdza, czy nie został ustawiony element {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}, a jeżeli tak, to dalej, czy nie ma elementów numerowanych, tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, przy pomocy funkcji: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, a jeśli również tak, czy ma ye elementy, to dalej jest sprawdzane, czy został ustawiony problem: {{Code|strony poza zakresem obsługiwanym}} {{LinkPatrz|strony poza zakresem obsługiwanym|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy: {{Code|{{sr|#p.CzyJestTakiElementTabeliProblemu|p=StronicowyParser/Problemy}}}}, a jeżeli nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Na samym końcu tej instrukcji warunkowej jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}. Dalej poza instrukcją warunkową w tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, jest wstawiany obiekty o wartości: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. Następnie, gdy element: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, jest ustawiony na {{Code|true}}, wtedy dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, pewna tablica, jest wstawiana do tablicy: {{Code|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}}, jeśli istnieje, a jeśli nie, to jest tworzona, jako tablica, wtedy też jest to robione. Tą czynnością wstawiany tabelę, do tej tablicy, czyli: <syntaxhighlight lang="lua"> table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); </syntaxhighlight> == {{Śródtytuł|p.LinkowanieInnychStron}}{{Code|p.LinkowanieInnychStron}} == Funkcja do sprawdzania innych stron niż aktualna, a jeżeli dana strona została już sprawdzona, to powtórnie nie jest już rewidowana. Funkcja ustawia w głównej tablicy aktualnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}} pewne podtablice. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejo jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|uchwyt_obiektu}} - jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_pobierz}} - jak w: {{LinkPatrz|czy_pobierz}}. Najpierw jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, która w razie poprawności nazwy strony, czyli inaczej nazw tstrony, charakteryzowanej przez, tzn.: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, uruchamia funkcję zdefiniowaną w nim. {{Tab}}Ta funkcja sprawdza, czy któraś z parametrów nazw istnieje, a jeżeli nie, to dalej jest inicjowana zmienna: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, pustą tablicą i podobnie {{Code|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}}, to uruchamiana jest: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI}}, do zbierania informacji o stronie nowej lub przebadanej (wtedy zostają zwrócone parametry z wcześniejszego jego analizowania, jak była nowa). Funkcja zwraca trzy parametry, tzn. {{Code|tabela_listy_danych_analizy_ksiazki0}} {{Patrz|tabela_listy_danych_analizy_ksiazki0}}, {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}} i {{Code|czy_inna}} {{Patrz|czy_inna}}. Te parametry mogą przyjmować wartość {{Code|nil}}, lub pierwszy {{Code|0}}, drugi, to nic innego jest jak: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, a trzeci parametr jest wtedy równy {{Code|true}}, gdy strona jest nowa, ale niekorzystana, a {{Code|false}}, bieżąca, ale niekorzystana, a gdy {{Code|nil}}, gdy np. zawartość strony nie istnieje. Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, istnieje, wtedy jest spraqdzane, czy któreś z parametrów: {{LinkPatrz|tablica_zmiennych2}} i {{LinkPatrz|czy_inna}}, nie istsnieje, wtedy ta funkcja się zakańcza. === {{Śródtytuł|JuzPoliczone}}{{Code|JuzPoliczone}} === Dla obiektów, dla których jest ustawiony parametr: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, co dalej w tym rozgałęzieniu instrukcji warunkiwej jest uruchamiana funkcja szablonów tekstu, czyli: {{Code|{{sr|#p.UstawianiePobierz|p=StronicowyParser/SzablonyTekstu}}}}, aby również później za pomocą innych funkcji przeanalizować również tekst w szablonach takich jak: {{s|Śródtekst}}, również wskaazywanych przez: {{s|PobierzŚródtekst}}. Dalej jest tworzona tablica, jeśli nie istnieje, tzn. {{Code|tablica_zmiennych2.dane_juz_policzone}} {{Patrz|tablica_zmiennych2.dane_juz_policzone}}, czyli jest inicjowana pustą tablicą. Dalej jest tworzona, jeśli nie istnieje, tablica wielowymiarowa po kolei, o kluczach kolejno o wartościach: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a jeżeli ta ostatnia wartość tej tablicy była wcześniej, to zwracane jest {{Code|true}}, przeciwnie {{Code|false}}, a tej ostatniej wartości tej tablicy jest przydzielana wartość {{Code|true}}. === Dalszy opis funkcji === Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest równy {{Code|0}}, ale nie {{Code|nil}}, wtedy jest sprawdzane, czy artykuł został wcześniej zrewidowany według: {{LinkŚródtytuł|JuzPoliczone}}, a jeżeli tak to jest zakańczany, a gdy ten parametr takiej wartośsci nie przyjmuje, wtedy tylko jest uruchamiana ta funkcja bez żadnego warunku. {{Tab}}Następnie jest uruchamiana funkcja: {{Code|{{sr|#p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony|p=StronicowyParser/SzablonyTekstu}}}}, do przydzielenia pewnych zmiennych z: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. {{Tab}}Jest sprawdzane, czy dany artykuł należy do spisu, jeżeli nie, to są ustawiane pewne kody problemów w tablicy problemów, tzn. {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Następnie jest sprawdzane, czy podany uchwyt: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, który jest podany w szablonach linków na aktualnej stronie, czy jest tylko jeden na stronie sprawdzanej, a jeżeli nie jest tak, to jest sprawdzane, czy nie istnieje ustawiony problem: {{Code|błędy uchwytów korzystanych stron}} {{Patrz|błędy uchwytów korzystanych stron}}, funkcją: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to taki problem jest dodawany dzięki: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. {{Tab}}Uruchamiana jest dalej funkcja: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, do sprawdzania pustości pewnych parametrów. {{Tab}}Gdy tabela: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest jednak równa wartości odpowiadającej fałszywej, wtedy jeśli nie istnieje problem: {{Code|błąd wewnętrzny modułu lua stronicowego parsera}} {{Patrz|błąd wewnętrzny modułu lua stronicowego parsera}}, co jest rewidowane elementem: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to dodawany jest taki problem do tabeli problemów na podstawie: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. == {{Śródtytuł|p.GeneralneLinkowanie}}{{Code|p.GeneralneLinkowanie}} == Funkcja zbiera uchwyty, na aktualnej lub innej stronie, a także je analizuje w odpowiedni sposób, modyfikuje tablica aktualnego modułu, czyli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, na podstawie poszczególnych wskazywanych artykułów na biężącej książce lub innej, która zbiera raz informacje o danej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_pobierz}} - jak w: {{LinkPatrz|czy_pobierz}}. === Wyznaczanie i przetwarzanie uchwytu === Funkcja wyznacza uchwyt z tabeli parametrów: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}} lub {{Code|1}}, a później w kodzie jest on kompletowany funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a następnie rozwijany w niej, a później jest dekodowany: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}. === Wyznaczanie nazw linku stronicowego === Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, wywołujac: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. === Generowanie możliwych kodów problemów i ustawianie zmiennej, przy której mają być zwrócone kategorie === Na samym końcu jest uruchamiana: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrem o tym uchwycie, wyliczonym wcześniej. Ta funkcja mówi przy jakim obiekcie szablonów stronicowych ma być uruchomione generowanie kategorii błędów wyniku uruchomień na stronie poszczególnych szablonów stronicowych, w kategorii na: {{lk2|Szablony stronicowe}}. === Przypadek uchwytu pustego === Gdy uchwyt jest pusty lub nie istnieje, wtedy uruchamia się: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, następnie: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, z kodem problemu: {{Code|brak uchwytu}}. === Istniejący niepusty uchwyt linku === Gdy uchwyt: {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}}, istnieje i jest niepusty, wtedy jest wyznaczana nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} z niej samej, lub jesli ona nie istnoeje, wtedy jeśli nazwa ksiązki istnieje, tylko, wtedy ta nazwa zaczyna być pusta, przeciwnie {{Code|nil}}, wtedy mamy do czynienia ze stroną główną podręcznika. Wiemy to z instrukcji: <syntaxhighlight lang="lua"> nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); </syntaxhighlight> ==== Nazwa artykułu nie istnieje ==== Gdy nazwa artykułu nie istnieje, wtedy wywoływana jest: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Wtedy funkcja się zakańcza. ==== Dodatkowo istnieje tylko nazwa artykułu ==== Jeśli nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jest niepusta, i gdy nazwa książki nie istnieje, wtedy są liczone parametry nazw, oprócz nazwy artykułu, bo jest policzona, więc te {{ZobaczTeż|nazwy}}: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrów charakteryzujących nazwę aktualnego artykułu, a jeśli jednak nazwa książki jest pusta, to są sprawdzane parametry w: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. ==== Dodatkowo istnieje tylko nazwa książki ==== Gdy nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, nie istnieje, i gdy nazwa książki: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} jest niepusta, wtedy nazwa artykułu zaczyna istnieć i inicjujemy wtedy ją wartością pustą, a jeśli pusta, to za zaczyna być potem generowanie kodów błędów funkcją: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, by potem się zakończa ta funkcja. ==== Liczenie parametrów nazw wywołań szablonowych linków ==== Przeciwnie są liczone parametry: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, tą samą metodą, co w punkcie: {{LinkZobaczTeż|nazwy}}. ==== Uruchamianie właściwych funkcji linków do programowego zrozumienia jego parametrów ==== Gdy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są porównywane z nazwami, którymi się przypisje jak w: {{LinkZobaczTeż|nazwy}} - one są sobie nierówne, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|p.LinkowanieInnychStron}}, przeciwnie wtedy działają dwie funkcje uruchomione po kolei, tzn.: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Co potem jest zakończenie działania funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pb53o4kyv7oqw7hxivme5du2yh6zlzs 556345 556344 2026-09-14T16:54:24Z Persino 2851 /* {{Śródtytuł|p.LinkowanieInnychStron}}{{Code|p.LinkowanieInnychStron}} */ 556345 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje zbieranie informacji o linkach na stronie. == {{Śródtytuł|p.LinkowanieFinalizowaniePrac}}{{Code|p.LinkowanieFinalizowaniePrac}} == Funkcja wsadza uchwyt obiektu, wskazujący na aktualną stronę, do pewnej tablicy, ściśle: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, i ewentualnie ustawia pewne problemy, jeśli je nie ustawiono. Funkcja dla tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, dla jego podtablicy: {{Code|linkobiekt}} {{Patrz|linkobiekt}} (jest to tablica, w której są zbierane w różnych podtablicach, w zależności od obiektu, uchwyty różnych linków na bieżącej stronie), w jego podtablicy o wartości elementu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, co taka tablica, to nic innego jak obiekt: {{Code|linkobiekttab}} {{Patrz|linkobiekttab}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt, obsługiwany przez tą funkcję linku, * {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}} - kod obiektu dla: {{LinkPatrz|obiekt}}, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|uchwyt_obiektu}} - jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_pobierz}} {{Patrz|czy_pobierz}} - czy to jest szablon typu {{Code|Pobierz}} {{Patrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. Funkcja sprawdza, czy nie został ustawiony element {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}, a jeżeli tak, to dalej, czy nie ma elementów numerowanych, tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, przy pomocy funkcji: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, a jeśli również tak, czy ma ye elementy, to dalej jest sprawdzane, czy został ustawiony problem: {{Code|strony poza zakresem obsługiwanym}} {{LinkPatrz|strony poza zakresem obsługiwanym|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy: {{Code|{{sr|#p.CzyJestTakiElementTabeliProblemu|p=StronicowyParser/Problemy}}}}, a jeżeli nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Na samym końcu tej instrukcji warunkowej jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}. Dalej poza instrukcją warunkową w tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, jest wstawiany obiekty o wartości: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. Następnie, gdy element: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, jest ustawiony na {{Code|true}}, wtedy dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, pewna tablica, jest wstawiana do tablicy: {{Code|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}}, jeśli istnieje, a jeśli nie, to jest tworzona, jako tablica, wtedy też jest to robione. Tą czynnością wstawiany tabelę, do tej tablicy, czyli: <syntaxhighlight lang="lua"> table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); </syntaxhighlight> == {{Śródtytuł|p.LinkowanieInnychStron}}{{Code|p.LinkowanieInnychStron}} == Funkcja do sprawdzania innych stron niż aktualna, a jeżeli dana strona została już sprawdzona, to powtórnie nie jest już rewidowana. Funkcja ustawia w głównej tablicy aktualnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}} pewne podtablice. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejo jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|uchwyt_obiektu}} - jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_pobierz}} - jak w: {{LinkPatrz|czy_pobierz}}. Najpierw jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, która w razie poprawności nazwy strony, czyli inaczej nazw tstrony, charakteryzowanej przez, tzn.: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, uruchamia funkcję zdefiniowaną w nim. {{Tab}}Ta funkcja sprawdza, czy któraś z parametrów nazw istnieje, a jeżeli nie, to dalej jest inicjowana zmienna: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, pustą tablicą i podobnie {{Code|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}}, to uruchamiana jest: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, do zbierania informacji o stronie nowej lub przebadanej (wtedy zostają zwrócone parametry z wcześniejszego jego analizowania, jak była nowa). Funkcja zwraca trzy parametry, tzn. {{Code|tabela_listy_danych_analizy_ksiazki0}} {{Patrz|tabela_listy_danych_analizy_ksiazki0}}, {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}} i {{Code|czy_inna}} {{Patrz|czy_inna}}. Te parametry mogą przyjmować wartość {{Code|nil}}, lub pierwszy {{Code|0}}, drugi, to nic innego jest jak: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, a trzeci parametr jest wtedy równy {{Code|true}}, gdy strona jest nowa, ale niekorzystana, a {{Code|false}}, bieżąca, ale niekorzystana, a gdy {{Code|nil}}, gdy np. zawartość strony nie istnieje. Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, istnieje, wtedy jest spraqdzane, czy któreś z parametrów: {{LinkPatrz|tablica_zmiennych2}} i {{LinkPatrz|czy_inna}}, nie istsnieje, wtedy ta funkcja się zakańcza. === {{Śródtytuł|JuzPoliczone}}{{Code|JuzPoliczone}} === Dla obiektów, dla których jest ustawiony parametr: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, co dalej w tym rozgałęzieniu instrukcji warunkiwej jest uruchamiana funkcja szablonów tekstu, czyli: {{Code|{{sr|#p.UstawianiePobierz|p=StronicowyParser/SzablonyTekstu}}}}, aby również później za pomocą innych funkcji przeanalizować również tekst w szablonach takich jak: {{s|Śródtekst}}, również wskaazywanych przez: {{s|PobierzŚródtekst}}. Dalej jest tworzona tablica, jeśli nie istnieje, tzn. {{Code|tablica_zmiennych2.dane_juz_policzone}} {{Patrz|tablica_zmiennych2.dane_juz_policzone}}, czyli jest inicjowana pustą tablicą. Dalej jest tworzona, jeśli nie istnieje, tablica wielowymiarowa po kolei, o kluczach kolejno o wartościach: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a jeżeli ta ostatnia wartość tej tablicy była wcześniej, to zwracane jest {{Code|true}}, przeciwnie {{Code|false}}, a tej ostatniej wartości tej tablicy jest przydzielana wartość {{Code|true}}. === Dalszy opis funkcji === Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest równy {{Code|0}}, ale nie {{Code|nil}}, wtedy jest sprawdzane, czy artykuł został wcześniej zrewidowany według: {{LinkŚródtytuł|JuzPoliczone}}, a jeżeli tak to jest zakańczany, a gdy ten parametr takiej wartośsci nie przyjmuje, wtedy tylko jest uruchamiana ta funkcja bez żadnego warunku. {{Tab}}Następnie jest uruchamiana funkcja: {{Code|{{sr|#p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony|p=StronicowyParser/SzablonyTekstu}}}}, do przydzielenia pewnych zmiennych z: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. {{Tab}}Jest sprawdzane, czy dany artykuł należy do spisu, jeżeli nie, to są ustawiane pewne kody problemów w tablicy problemów, tzn. {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Następnie jest sprawdzane, czy podany uchwyt: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, który jest podany w szablonach linków na aktualnej stronie, czy jest tylko jeden na stronie sprawdzanej, a jeżeli nie jest tak, to jest sprawdzane, czy nie istnieje ustawiony problem: {{Code|błędy uchwytów korzystanych stron}} {{Patrz|błędy uchwytów korzystanych stron}}, funkcją: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to taki problem jest dodawany dzięki: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. {{Tab}}Uruchamiana jest dalej funkcja: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, do sprawdzania pustości pewnych parametrów. {{Tab}}Gdy tabela: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest jednak równa wartości odpowiadającej fałszywej, wtedy jeśli nie istnieje problem: {{Code|błąd wewnętrzny modułu lua stronicowego parsera}} {{Patrz|błąd wewnętrzny modułu lua stronicowego parsera}}, co jest rewidowane elementem: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to dodawany jest taki problem do tabeli problemów na podstawie: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. == {{Śródtytuł|p.GeneralneLinkowanie}}{{Code|p.GeneralneLinkowanie}} == Funkcja zbiera uchwyty, na aktualnej lub innej stronie, a także je analizuje w odpowiedni sposób, modyfikuje tablica aktualnego modułu, czyli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, na podstawie poszczególnych wskazywanych artykułów na biężącej książce lub innej, która zbiera raz informacje o danej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)...end; </syntaxhighlight> Parametry funkcji: * {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, * {{Code|czy_pobierz}} - jak w: {{LinkPatrz|czy_pobierz}}. === Wyznaczanie i przetwarzanie uchwytu === Funkcja wyznacza uchwyt z tabeli parametrów: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}} lub {{Code|1}}, a później w kodzie jest on kompletowany funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a następnie rozwijany w niej, a później jest dekodowany: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}. === Wyznaczanie nazw linku stronicowego === Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, wywołujac: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. === Generowanie możliwych kodów problemów i ustawianie zmiennej, przy której mają być zwrócone kategorie === Na samym końcu jest uruchamiana: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrem o tym uchwycie, wyliczonym wcześniej. Ta funkcja mówi przy jakim obiekcie szablonów stronicowych ma być uruchomione generowanie kategorii błędów wyniku uruchomień na stronie poszczególnych szablonów stronicowych, w kategorii na: {{lk2|Szablony stronicowe}}. === Przypadek uchwytu pustego === Gdy uchwyt jest pusty lub nie istnieje, wtedy uruchamia się: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, następnie: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, z kodem problemu: {{Code|brak uchwytu}}. === Istniejący niepusty uchwyt linku === Gdy uchwyt: {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}}, istnieje i jest niepusty, wtedy jest wyznaczana nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} z niej samej, lub jesli ona nie istnoeje, wtedy jeśli nazwa ksiązki istnieje, tylko, wtedy ta nazwa zaczyna być pusta, przeciwnie {{Code|nil}}, wtedy mamy do czynienia ze stroną główną podręcznika. Wiemy to z instrukcji: <syntaxhighlight lang="lua"> nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); </syntaxhighlight> ==== Nazwa artykułu nie istnieje ==== Gdy nazwa artykułu nie istnieje, wtedy wywoływana jest: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Wtedy funkcja się zakańcza. ==== Dodatkowo istnieje tylko nazwa artykułu ==== Jeśli nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jest niepusta, i gdy nazwa książki nie istnieje, wtedy są liczone parametry nazw, oprócz nazwy artykułu, bo jest policzona, więc te {{ZobaczTeż|nazwy}}: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrów charakteryzujących nazwę aktualnego artykułu, a jeśli jednak nazwa książki jest pusta, to są sprawdzane parametry w: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. ==== Dodatkowo istnieje tylko nazwa książki ==== Gdy nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, nie istnieje, i gdy nazwa książki: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} jest niepusta, wtedy nazwa artykułu zaczyna istnieć i inicjujemy wtedy ją wartością pustą, a jeśli pusta, to za zaczyna być potem generowanie kodów błędów funkcją: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, by potem się zakończa ta funkcja. ==== Liczenie parametrów nazw wywołań szablonowych linków ==== Przeciwnie są liczone parametry: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, tą samą metodą, co w punkcie: {{LinkZobaczTeż|nazwy}}. ==== Uruchamianie właściwych funkcji linków do programowego zrozumienia jego parametrów ==== Gdy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są porównywane z nazwami, którymi się przypisje jak w: {{LinkZobaczTeż|nazwy}} - one są sobie nierówne, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|p.LinkowanieInnychStron}}, przeciwnie wtedy działają dwie funkcje uruchomione po kolei, tzn.: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Co potem jest zakończenie działania funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5wy84chfs7y2mry5as5yimdkbge0ndk 556350 556345 2026-09-14T17:33:29Z Persino 2851 556350 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Funkcje zbieranie informacji o linkach na stronie. == {{Śródtytuł|p.LinkowanieFinalizowaniePrac}}{{Code|p.LinkowanieFinalizowaniePrac}} == Funkcja wsadza uchwyt obiektu, wskazujący na aktualną stronę, do pewnej tablicy, ściśle: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, i ewentualnie ustawia pewne problemy, jeśli je nie ustawiono. Funkcja dla tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, dla jego podtablicy: {{Code|linkobiekt}} {{Patrz|linkobiekt}} (jest to tablica, w której są zbierane w różnych podtablicach, w zależności od obiektu, uchwyty różnych linków na bieżącej stronie), w jego podtablicy o wartości elementu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, co taka tablica, to nic innego jak obiekt: {{Code|linkobiekttab}} {{Patrz|linkobiekttab}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Obiekt, obsługiwany przez tą funkcję linku. | 3 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}} | _3 = Kod obiektu dla: {{LinkPatrz|obiekt}}. | 4 = {{Code|tablica_zmiennych}} | _4 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 5 = {{Code|nazwa_obiektu}} | _5 = Jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 6 = {{Code|uchwyt_obiektu}} | _6 = Jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 8 = {{Code|czy_pobierz}} {{Patrz|czy_pobierz}} | _8 = Czy to jest szablon typu {{Code|Pobierz}} {{Patrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}. }} Funkcja sprawdza, czy nie został ustawiony element {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}, a jeżeli tak, to dalej, czy nie ma elementów numerowanych, tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, przy pomocy funkcji: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, a jeśli również tak, czy ma ye elementy, to dalej jest sprawdzane, czy został ustawiony problem: {{Code|strony poza zakresem obsługiwanym}} {{LinkPatrz|strony poza zakresem obsługiwanym|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy: {{Code|{{sr|#p.CzyJestTakiElementTabeliProblemu|p=StronicowyParser/Problemy}}}}, a jeżeli nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Na samym końcu tej instrukcji warunkowej jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}. Dalej poza instrukcją warunkową w tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, jest wstawiany obiekty o wartości: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. Następnie, gdy element: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, jest ustawiony na {{Code|true}}, wtedy dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, pewna tablica, jest wstawiana do tablicy: {{Code|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}}, jeśli istnieje, a jeśli nie, to jest tworzona, jako tablica, wtedy też jest to robione. Tą czynnością wstawiany tabelę, do tej tablicy, czyli: <syntaxhighlight lang="lua"> table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},}); </syntaxhighlight> == {{Śródtytuł|p.LinkowanieInnychStron}}{{Code|p.LinkowanieInnychStron}} == Funkcja do sprawdzania innych stron niż aktualna, a jeżeli dana strona została już sprawdzona, to powtórnie nie jest już rewidowana. Funkcja ustawia w głównej tablicy aktualnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}} pewne podtablice. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 4 = {{Code|tablica_zmiennych}} | _4 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 5 = {{Code|nazwa_obiektu}} | _5 = jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 6 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _6 = Kolejo jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 7 = {{Code|uchwyt_obiektu}} | _7 = Jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 8 = {{Code|czy_pobierz}} | _8 = Jak w: {{LinkPatrz|czy_pobierz}}. }} Najpierw jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, która w razie poprawności nazwy strony, czyli inaczej nazw tstrony, charakteryzowanej przez, tzn.: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, uruchamia funkcję zdefiniowaną w nim. {{Tab}}Ta funkcja sprawdza, czy któraś z parametrów nazw istnieje, a jeżeli nie, to dalej jest inicjowana zmienna: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, pustą tablicą i podobnie {{Code|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}}, to uruchamiana jest: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, do zbierania informacji o stronie nowej lub przebadanej (wtedy zostają zwrócone parametry z wcześniejszego jego analizowania, jak była nowa). Funkcja zwraca trzy parametry, tzn. {{Code|tabela_listy_danych_analizy_ksiazki0}} {{Patrz|tabela_listy_danych_analizy_ksiazki0}}, {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}} i {{Code|czy_inna}} {{Patrz|czy_inna}}. Te parametry mogą przyjmować wartość {{Code|nil}}, lub pierwszy {{Code|0}}, drugi, to nic innego jest jak: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, a trzeci parametr jest wtedy równy {{Code|true}}, gdy strona jest nowa, ale niekorzystana, a {{Code|false}}, bieżąca, ale niekorzystana, a gdy {{Code|nil}}, gdy np. zawartość strony nie istnieje. Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, istnieje, wtedy jest spraqdzane, czy któreś z parametrów: {{LinkPatrz|tablica_zmiennych2}} i {{LinkPatrz|czy_inna}}, nie istsnieje, wtedy ta funkcja się zakańcza. === {{Śródtytuł|JuzPoliczone}}{{Code|JuzPoliczone}} === Dla obiektów, dla których jest ustawiony parametr: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, co dalej w tym rozgałęzieniu instrukcji warunkiwej jest uruchamiana funkcja szablonów tekstu, czyli: {{Code|{{sr|#p.UstawianiePobierz|p=StronicowyParser/SzablonyTekstu}}}}, aby również później za pomocą innych funkcji przeanalizować również tekst w szablonach takich jak: {{s|Śródtekst}}, również wskaazywanych przez: {{s|PobierzŚródtekst}}. Dalej jest tworzona tablica, jeśli nie istnieje, tzn. {{Code|tablica_zmiennych2.dane_juz_policzone}} {{Patrz|tablica_zmiennych2.dane_juz_policzone}}, czyli jest inicjowana pustą tablicą. Dalej jest tworzona, jeśli nie istnieje, tablica wielowymiarowa po kolei, o kluczach kolejno o wartościach: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a jeżeli ta ostatnia wartość tej tablicy była wcześniej, to zwracane jest {{Code|true}}, przeciwnie {{Code|false}}, a tej ostatniej wartości tej tablicy jest przydzielana wartość {{Code|true}}. === Dalszy opis funkcji === Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest równy {{Code|0}}, ale nie {{Code|nil}}, wtedy jest sprawdzane, czy artykuł został wcześniej zrewidowany według: {{LinkŚródtytuł|JuzPoliczone}}, a jeżeli tak to jest zakańczany, a gdy ten parametr takiej wartośsci nie przyjmuje, wtedy tylko jest uruchamiana ta funkcja bez żadnego warunku. {{Tab}}Następnie jest uruchamiana funkcja: {{Code|{{sr|#p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony|p=StronicowyParser/SzablonyTekstu}}}}, do przydzielenia pewnych zmiennych z: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. {{Tab}}Jest sprawdzane, czy dany artykuł należy do spisu, jeżeli nie, to są ustawiane pewne kody problemów w tablicy problemów, tzn. {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Następnie jest sprawdzane, czy podany uchwyt: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, który jest podany w szablonach linków na aktualnej stronie, czy jest tylko jeden na stronie sprawdzanej, a jeżeli nie jest tak, to jest sprawdzane, czy nie istnieje ustawiony problem: {{Code|błędy uchwytów korzystanych stron}} {{Patrz|błędy uchwytów korzystanych stron}}, funkcją: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to taki problem jest dodawany dzięki: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. {{Tab}}Uruchamiana jest dalej funkcja: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, do sprawdzania pustości pewnych parametrów. {{Tab}}Gdy tabela: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest jednak równa wartości odpowiadającej fałszywej, wtedy jeśli nie istnieje problem: {{Code|błąd wewnętrzny modułu lua stronicowego parsera}} {{Patrz|błąd wewnętrzny modułu lua stronicowego parsera}}, co jest rewidowane elementem: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to dodawany jest taki problem do tabeli problemów na podstawie: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. == {{Śródtytuł|p.GeneralneLinkowanie}}{{Code|p.GeneralneLinkowanie}} == Funkcja zbiera uchwyty, na aktualnej lub innej stronie, a także je analizuje w odpowiedni sposób, modyfikuje tablica aktualnego modułu, czyli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, na podstawie poszczególnych wskazywanych artykułów na biężącej książce lub innej, która zbiera raz informacje o danej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 4 = {{Code|tablica_zmiennych}} | _4 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 6 = {{Code|nazwa_obiektu}} | _6 = Jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 7 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _7 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 10 = {{Code|KtorySzablonMaZwracacKategorie}} | _10 = Jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 11 = {{Code|czy_pobierz}} | _11 = jak w: {{LinkPatrz|czy_pobierz}}. }} === Wyznaczanie i przetwarzanie uchwytu === Funkcja wyznacza uchwyt z tabeli parametrów: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}} lub {{Code|1}}, a później w kodzie jest on kompletowany funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a następnie rozwijany w niej, a później jest dekodowany: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}. === Wyznaczanie nazw linku stronicowego === Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, wywołujac: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. === Generowanie możliwych kodów problemów i ustawianie zmiennej, przy której mają być zwrócone kategorie === Na samym końcu jest uruchamiana: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrem o tym uchwycie, wyliczonym wcześniej. Ta funkcja mówi przy jakim obiekcie szablonów stronicowych ma być uruchomione generowanie kategorii błędów wyniku uruchomień na stronie poszczególnych szablonów stronicowych, w kategorii na: {{lk2|Szablony stronicowe}}. === Przypadek uchwytu pustego === Gdy uchwyt jest pusty lub nie istnieje, wtedy uruchamia się: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, następnie: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, z kodem problemu: {{Code|brak uchwytu}}. === Istniejący niepusty uchwyt linku === Gdy uchwyt: {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}}, istnieje i jest niepusty, wtedy jest wyznaczana nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} z niej samej, lub jesli ona nie istnoeje, wtedy jeśli nazwa ksiązki istnieje, tylko, wtedy ta nazwa zaczyna być pusta, przeciwnie {{Code|nil}}, wtedy mamy do czynienia ze stroną główną podręcznika. Wiemy to z instrukcji: <syntaxhighlight lang="lua"> nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil)); </syntaxhighlight> ==== Nazwa artykułu nie istnieje ==== Gdy nazwa artykułu nie istnieje, wtedy wywoływana jest: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Wtedy funkcja się zakańcza. ==== Dodatkowo istnieje tylko nazwa artykułu ==== Jeśli nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jest niepusta, i gdy nazwa książki nie istnieje, wtedy są liczone parametry nazw, oprócz nazwy artykułu, bo jest policzona, więc te {{ZobaczTeż|nazwy}}: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrów charakteryzujących nazwę aktualnego artykułu, a jeśli jednak nazwa książki jest pusta, to są sprawdzane parametry w: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. ==== Dodatkowo istnieje tylko nazwa książki ==== Gdy nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, nie istnieje, i gdy nazwa książki: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} jest niepusta, wtedy nazwa artykułu zaczyna istnieć i inicjujemy wtedy ją wartością pustą, a jeśli pusta, to za zaczyna być potem generowanie kodów błędów funkcją: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, by potem się zakończa ta funkcja. ==== Liczenie parametrów nazw wywołań szablonowych linków ==== Przeciwnie są liczone parametry: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, tą samą metodą, co w punkcie: {{LinkZobaczTeż|nazwy}}. ==== Uruchamianie właściwych funkcji linków do programowego zrozumienia jego parametrów ==== Gdy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są porównywane z nazwami, którymi się przypisje jak w: {{LinkZobaczTeż|nazwy}} - one są sobie nierówne, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|p.LinkowanieInnychStron}}, przeciwnie wtedy działają dwie funkcje uruchomione po kolei, tzn.: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Co potem jest zakończenie działania funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7gkxt5cny5ly1dv7kewm9fdlort7kfn Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I 4 63913 556351 554758 2026-09-14T17:45:01Z Persino 2851 556351 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}{{Code|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}} == Funkcja służy do zbierania informacji o danej analizowanej stronie, którego główną częścią jest strona korzystana, w której gromadzą się informacji też z pozostałych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, | 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 3 = {{Code|czy_artykul_korzystany}} | _3 = Jak w: {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 4 = {{Code|tablica_zmiennych}} | _4 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 5 = {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} | _5 = Jak w: {{LinkPatrz|czy_szablon_pudelkowy_strony_zbiorczej|StronicowyParser/ZbieranieDanychStron/Tom III}}. }} === {{Śródtytuł|__FUNKCJA_ARTYKULU}}{{Code|__FUNKCJA_ARTYKULU}} === Funkcja do tworzenia tabeli artykułów z innymi jej parametrami wielowymiarowtmi, a jeżeli owe pośrednie, i nie tylko, istnieją, to te tabele są zwracane lub, a te nieistniejące są nowo tworzone, jako puste tablice, tworząc w ten sposób wielowymoarowac tabelę, zależną od parametrów nazw artykułu, ale ksiązki lub niby-ksiażki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry artykułu}}: {{OpisParametrów | 1 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _1 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, | 2 = {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} | _2 = Nazwa artykułu w książce, bez pełnej nazwy książki. }} ==== Tworzenie tabel książkowych danego artykułu ==== Poniżej są tworzone podtabele puste, jeśli nie zostały utworzone. Funkcja, która w tabeli: {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, w podtabeli o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}, o dalszym kluczu: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}}, która istnieje, tworzy tabele trójwymiarową kolejno po prarametrach: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, te tabele pośrednie są wtedy tworzone, jeśli nie istnieją, a gdy istnieją to nie są tworzone, tylko funkcja przechodzi do dalszych. Dalej tworzona jest podtabela, jeśli nie istnieje o nazwie {{Code|lista_podstron_woluminu}} {{Patrz|lista_podstron_woluminu}}. Następnie generowana jest podtabela, jeśli nie istnieje, o kluczu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. ==== Wartości zwracane ==== * Da tutaj ustawiane zmienne z kluczem: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, i bez niej. * Poniższe zmienne tabel nazw danej ksiązki można przyporządkować kolejnym nazwą danego artykułu, gdy podano nazwę artykułu ksiązki, lub nie, wtedy to samo, ale dla nazw książki, tzn.: ** {{Code|tablica_przestrzeni}} {{Patrz|tablica_przestrzeni}}, {{Code|tablica_przestrzeni_ksiazki}} {{Patrz|tablica_przestrzeni_ksiazki}}, {{Code|tablica_ksiazki}} {{Patrz|tablica_ksiazki}} i {{Code|artykul_analizowany}} {{Patrz|artykul_analizowany}} - są kolejno przyporządkowane zmiennym: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. ===== Przypadek istnienia nazwy artykułu ===== Funkcja zwraca kolejno elementy, jeśli parametr: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, został podany, wtedy: <syntaxhighlight lang="lua"> return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany; </syntaxhighlight> ===== Przypadek nieistnienia ===== Przeciwnie zwracany jest zbiór zmiennych po kolei: <syntaxhighlight lang="lua"> return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki; </syntaxhighlight> Co to są za zmienne, wiadomo z ich nazw, po prostu są to pewne pośrednie, i nie tylko, tabele. === {{Śródtytuł|__FUNKCJA_POBIERANIE}}{{Code|__FUNKCJA_POBIERANIE}} === Funkcja zwraca parametry strony aktualnej, analizowanej jeszcze raz, aby ją nie powtórnie rewidować, lub podobnie dla innego artykułu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end; </syntaxhighlight> Parametry funkcji są takie same jak w punkcie {{LinkZobaczTeż|parametry artykułu}}. ==== Strona bieżąca, jako artykuł niekorzystany, czyli przy fałszywej wartości: {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}}, dla strony już analizowanej, ale jeszcze nie do końca ==== Dla jeszcze raz analizowanego artykułu i bieżącego, ale tym razem niekorzystanego, zwracane są parametry: <syntaxhighlight lang="lua"> return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; </syntaxhighlight> Tabela: {{Code|dane_zebrane_ze_stron}} {{LinkPatrz|dane_zebrane_ze_stron}}, tam są dane zebrane z aktualnego artykułu. ===== Zwracane parametry dla strony bieżącej analizowanej jako niebieżąca ===== Dla elementu: {{Code|dane_analizy_stron}} {{LinkPatrz|dane_analizy_stron}}, jeżeli dany powtórnie bieżący artykuł był już rewidowany, to zwracane są elementy: <syntaxhighlight lang="lua"> return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false; </syntaxhighlight> * Na końcu wartość: {{Code|false}}, wskazuje na aktyalny bieżący artykuł, powtórnie jeszcze raz analizowany. * Zmienna o kluczu: {{Code|dane_zebrane_ze_stron}} {{LinkPatrz|dane_zebrane_ze_stron}}, tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, a to wewnątrz: {{Code|self}} {{Patrz|self}}, to nic innego jak tabela zmiennych danego artykułu: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. ==== Strona niebieżąca, ale niekorzystana, według zmiennej: {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}} ==== Przedstawiony jest tutaj przypadek pobierania zmiennych strony niebieżącej, ale niekorzystanej. ===== Ustawianie analizy spisu treści artykułu dla strony dołączonej, innej niż bieżąca ===== Dla innej takiej strony jest tworzony parametr, jeżeli jest włączona analiza, dla klucza: {{Code|analiza_spis_tresci}} {{Patrz|analiza_spis_tresci}}, według tego jest tworzony wartością prawdziwą parametr o innym znów kluczu: {{Code|analiza_spis_tresci_doloczone}} {{Patrz|analiza_spis_tresci_doloczone}}: <syntaxhighlight lang="lua"> if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true; end; </syntaxhighlight> ===== Pobieranie elementów przeanalizowanej strony ===== Dla: {{Code|dane_zebrane_ze_stron}} {{Patrz|dane_zebrane_ze_stron}}, to podtabela: {{Code|lista_podstron_woluminu}} {{LinkPatrz|lista_podstron_woluminu}}, z kluczem: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, o nazwie takiej samej, jak ten parametr zwracany. ====== Analiza spisu treści artykułu już tego sprawdzonego ze zebranymi informacjami o niej, zbieranie dodatkowych elementów ====== Jeśli mamy stronę niekorzystaną, czyli parametr: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}},j est fałsszywy, wtedy przy istnieniu funkcji, takim że jest elementem: {{Code|TOCSPIS_FUNCTION}} {{Patrz|TOCSPIS_FUNCTION}}, tabeli artykułu: {{Code|tabela_artykul}} {{LinkPatrz|tabela_artykul}}, ona jest uruchamiana, jeśli zwróci prawdziwa wartość, w takim wypadku jako element jest usuwany z niej. ====== Zwracane parametry takiej strony ====== Funkcja zwraca wynik, dla innego artykułu niż bieżąca: <syntaxhighlight lang="lua"> return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true; </syntaxhighlight> * A na końcu wartość {{Code|true}}, wskazuje, że strona niebieżąca jeszcze raz powtórnie jest analizowana. * Tutaj element: {{Code|dane_zebrane_ze_stron}}, oznacza tyle, co: {{LinkPatrz|dane_zebrane_ze_stron}}. ==== Zwracane parametry, gdy coś jest nie tak z nią, lub strona nie została przeanalizowana, tzn. informacje o niej nie zostały zebrane ==== Przeciwnie jest zwracane: {{Code|true}} - gdu strona jeszcze nie została przeanalizowana, lub {{Code|nil}} - gdy coś jest nie tak ze zmiennymi strony, jeśli tabela: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} w {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, lub podtatela: {{Code|dane_analizy_stron}} {{LinkPatrz|dane_analizy_stron}}, gdy któreś z nich nie istnieje, lub oba z nich. === {{Śródtytuł|StronaSubstFunkcja}}{{Code|StronaSubstFunkcja}} === Funkcja sprawdza, czy jest prawda: {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{LinkPatrz|czy_szablon_pudelkowy_strony_zbiorczej|StronicowyParser/ZbieranieDanychStron/Tom III}}, fałsz: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, prawda: {{Code|tabela_artykul}} {{Patrz|tabela_artykul}} i fałsz: {{Code|tabela_artykul.strona_zbiorcza}} {{Patrz|tabela_artykul.strona_zbiorcza}}, a jeśli tak, to inicjowane są funkcje definicjami: <syntaxhighlight lang="lua"> local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end; </syntaxhighlight> Wtedy zmiennej: {{Code|tabela_artykul.strona_zbiorcza}} {{LinkPatrz|tabela_artykul.strona_zbiorcza}}, jest przydzielana wartość z funkcji: {{Code|{{sr|#p.AnalizaStronaSubst|p=StronicowyParser/StronaSubst}}}}, na podstawie tego, czy aktualna strona jest stroną zbiorczą, a może nie. === {{Śródtytuł|InneInformacjePrzebneDoAnalizowanejKsiazki}}{{Code|InneInformacjePrzebneDoAnalizowanejKsiazki}} === Funkcja do zbierania informacji o spisie artykułów książkowych i ich licencjach oraz ewentualnie zebrane informacje ze stron: {{lk2|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}, z szablonu, w któreś tej pozycji w: {{s|Układ autonawigacji}}, i ze spisów podanej w niej jako parametry. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function InneInformacjePrzebneDoAnalizowanejKsiazki()...end; </syntaxhighlight> Parametry funkcji: * brak. ==== {{Śródtytuł|__FUNKCJA_SPISU}}{{Code|__FUNKCJA_SPISU}} ==== Funkcja do inicjowania parametrów spisu danej ksiązki, do której należy dany artykuł, np. ten, uzyskanych z analizy wszystkich spisów danej książki. Definicja skrotowa funkcji: <syntaxhighlight lang="lua"> local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}} | _1 = Tablica dla analizowanej książki. | 2 = {{Code|czy_podac_adres}} {{Patrz|czy_podac_adres}} | _2 = Czy podać adres bazowego woluminu. }} Tablicy: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, jest inicjowany jej element: {{Code|spis}} {{Patrz|spis}}, tabelą: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}. Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, ma wartość prawdziwą, to iniciowana jest podtablica, tablicy: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, o kluczu: {{Code|licencja}} {{Patrz|licencja}}, tabelą: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}. Dalej kolejno elementy podtablice o kluczach: {{Code|nazwa_bazowego_spisu}} {{Patrz|nazwa_bazowego_spisu}}, {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} i {{Code|dodatkowe_strony_woluminu}} {{Patrz|}dodatkowe_strony_woluminu}}, tabeli: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, i inicjowane są tabelami o takich samych nazwach, jak te klucze dwa, a ostatni tabelą: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}. Tabeli: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, o kluczu w nim: {{Code|adres_woluminu_bazowego_spisu_rzeczy}} {{Patrz|adres_woluminu_bazowego_spisu_rzeczy}}, jest równa wartości: {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}, jeśli istnieje: {{Code|czy_podac_adres}} {{LinkPatrz|czy_podac_adres}}, lub przeciwnie wartością {{Code|nil}}. ==== Dalszy opis funkcji - etap I ==== Jeżeli dla aktualnego artykułu dla książki nie ustawiono kodu: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, wtedy są analizowane elementy opisane w nagłówku opisywanej funkcji, pod warunkiem, jeżeli istnieją parametry nazw książki: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}. Gdy artykuł jest analizowany, wtedy jeśli parametr: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, ma wartość prawdziwą, jeśli przy nieistnieniu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, tablicy {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, z podtablicą: {{Code|CzyArtykułKsiążki}} {{Patrz|CzyArtykułKsiążki}}, wtedy to coś jest inicjowane wartością na {{Code|tak}}. Co będzie znaczyło, że artykuł bieżący ma spis, czy spisy. Gdy już spis jeszcze nie analizowano, a jeżeli juz został zanalizowany, to sprawdzany jest: {{Code|czy_spis_analizowano}}, tablicy: {{LinkPatrz|tablica_ksiazki}}. Jeśli ten parametr jest prawdziwy, to ten artykuł ma spis już zanalizowany, a więc jeszcze raz on nie będzie już badany. A jeśli jednak spisy książki nie zostały sprawdzone i sparsowane, wtedy uruchamia się następne rozgałęzienie pętli. Uruchamia się dalej funkcja: {{Code|{{sr|#p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji|p=StronicowyParser/SpisTreści}}}}, w nim są uruchamiane w pewien sposób dwie funkcje. Ta funkcja zwraca parametry: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}}, {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}} i {{Code|adres_ksiazki_glownego_spisu_tresci}} {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}. ===== {{Code|{{sr|#p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji|p=StronicowyParser/SpisTreści}}}} ===== Ta funkcja służy do parsowania spisów i innych omówionych elementów książki danego artykułu. ====== Pierwsza anonimowa funkcja ====== Dla analizowanej pierwszej funkcji, ona jest uruchamiana, wtedy kiedy zostały zebrane wszystkie informacje ze spisów, wtedy dla elementu: {{Code|tablica_ksiazki_strona}} {{LinkPatrz|tablica_ksiazki_strona}}, jest sprawdzane, czy jego element: {{Code|spis}} {{LinkPatrz|spis}}, istnieje, jeśli istnieje, zatem wtedy elementy z: {{Code|_strona_temp}} {{Patrz|_strona_temp}}, inicjujemy tymi z: {{Code|_strona}} {{Patrz|_strona}}, z elementów zmiennych (parametrów) tej funkcji, oraz potem inicjujemy inne jego podelementy, tzn.: {{Code|spis}} {{LinkPatrz|spis}}, {{Code|licencja}} {{LinkPatrz|licencja}}, {{Code|nazwa_bazowego_spisu}} {{LinkPatrz|nazwa_bazowego_spisu}}, {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, {{Code|dodatkowe_strony_woluminu}} {{Patrz|dodatkowe_strony_woluminu}} i {{Code|adres_woluminu_bazowego_spisu_rzeczy}} {{LinkPatrz|adres_woluminu_bazowego_spisu_rzeczy}}, elementu: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, tymi saamymi elementami, ale dla innej strony, tzn.: {{Code|tablica_ksiazki_strona}} {{LinkPatrz|tablica_ksiazki_strona}}. Funkcja się uruchamia, kiedy dany spis danej książki jest przekierowaniem do całkiem innej strony, nie tylko w tym podręczniku, ale może być też w innym, ale nie jednocześnie. Elementy tablicowe książkowe: * {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}} - element książkowy tablicowy, który jest podtablicą właśnie że dla: {{Code|lista_podstron_woluminu}} {{LinkPatrz|lista_podstron_woluminu}}, co jest właśnie tablica dla kluczy, którymi są właśnie artykuły, a każdy taki artykuł ma tablicę, a przodek tej tablicy, to nic innego jak: {{Code|dane_analizy_stron}} {{LinkPatrz|dane_analizy_stron}}, tablicy {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, a to {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}. * {{Code|tablica_ksiazki_strona}} {{Patrz|tablica_ksiazki_strona}} - znaczenie tej tablicy jest takie samo, jak dla: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, tylko ta tablica jest do tej strony, co wskazuje przekierowanie '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''', a: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, jest własnie to przerowanie. Też jest inicjowany element tej pierwszej zmiennej książkowej o kluczu: {{Code|referencja_do_nowej_formy_spisu}} {{Patrz|referencja_do_nowej_formy_spisu}}, według: <syntaxhighlight lang="lua"> tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,}; </syntaxhighlight> Funkcja wtedy zwróci wartość liczbową: {{Code|1}}, a w innych przeciwnych wypadkach ta funkcja nic nie zwraca. ====== Druga anonimowa funkcji ====== Ta funkcja działa, gdy parametry strony, tzn.: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są równe podobnym parametrom z: {{Code|_ref_spis}} {{Patrz|_ref_spis}}, z parametrów tej funkcji, tzn. czy spis jest analizowanym korzystanym artykułem. Ta funkcja słuzy do tego, aby nie analizować dwa razy tego samego spisu, raz jako spis, a za innym razem jako artykuł z uchwytami. Ta funkcja kopiuje dokładnie elementy z: {{Code|_ref_spis}} {{LinkPatrz|_ref_spis}}, temu z: {{Code|_ref}} {{Patrz|_ref}}, te elementy, to nic innego jak: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}}, czyli tworzymy elementy takie: {{Code|tekst_rozwiniety_calego_artykulu_ref}} {{Patrz|tekst_rozwiniety_calego_artykulu_ref}}, {{Code|tablica_analizy_obiektow_strony_dany_modul_ref}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_ref}} i {{Code|tablica_danych_parametrow_szablonu_strony_ref}} {{Patrz|tablica_danych_parametrow_szablonu_strony_ref}}. ==== Dalszy opis funkcji - etap II ==== ===== Przypadek nieistnienia spisu głównego książki ===== Gdy: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jest równa {{Code|0}}, dalej: {{Tab}}Gdy to jest artykuł korzystany, tzn. zmienna: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przyjmuje wartość prawdziwą, wtedy przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, zgłaszany jest kod problemu: {{Code|korzystana strona główna nie istnieje}}. {{Tab}}Przeciwnie natomiast, tzn. strona nie jest bieżąca, to przy pomocy: {{Code|{{sr|#p.DodawanieProblemowegoElementuDoTablicy|p=StronicowyParser/Problemy}}}}, ustawiany jest kod problemu: {{Code|dołączone strony główne nie istnieją}} {{Patrz|dołączone strony główne nie istnieją}}. ===== Przypadek istnienia spisu głównego w przekierowaniu spisu głównym innej książki ===== Ten rozdział przedstawia analizę spisową spisu danego artykułu książki. ====== Wstęp analizy wyszukiwania przekierowań, na co one wskazują w przypadku bieżącego artykułu ====== A jeśli gdy, ta zmienna: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jedynie istnieje wtedy, jeśli to jest tabelka, dalej jeśli: {{Code|adres_ksiazki_glownego_spisu_tresci}} {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}, ma wartość, to: * Dalej jest tworzony element: {{Code|tablica_ksiazki_stara}} {{Patrz|tablica_ksiazki_stara}}, na podstawie tego, aby zachować ten stary element, przed zmianą, inicjując to tablicą: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}. * Uruchamiana jest: {{LinkŚródtytuł|__FUNKCJA_SPISU}}, z pierwszym parametrem: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, i drugą wartością: {{Code|true}}. * Dalej przy pomocy funkcji: {{Code|{{sr|#p.OdpowiednikNaPrzemianArtykularnychStronWoluminu|p=StronicowyParser/Potrzebne}}}}, uzyskiwany jest jego odpowiedniek nieprzekierowaniowy, danego przekierowania, lub ten sam adres, gdy to nie jest właśnie nim, czyli: {{Code|artykul}} {{Patrz|artykul}}, i kod uzyskanego wyniku: {{Code|kod_wyniku}} {{Patrz|kod_wyniku}}. Kolejne nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są liczone z: {{Code|adres_ksiazki_glownego_spisu_tresci}} {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}, po kolejnych numerkach. ====== Analiza błędów zwróconych przez funkcję zwracającą, na co wskazuje przekierowanie, wraz z kodem przypadku ====== ; Przypadek stron przekierowań, jak i nie{{dk}} Gdy {{ZobaczTeż|sprawdzanie_i_pobieranie}}: {{LinkPatrz|kod_wyniku}}, jest równy: {{Code|1}} lub {{Code|2}}, wtedy uzyskujemy kolejne wartości z: {{LinkŚródtytuł|__FUNKCJA_POBIERANIE}}, pobierająca elementy artykularne, z ostatnim parametrem: {{Code|artykul}} {{LinkPatrz|artykul}}, w takim razie uzyskujemy pewne wartości. * Gdy pierwszy parametr nie ma wartości, to zwracamy tą wartość, z drugą wartością {{Code|true}}, co potem funkcja nadrzędna zostaje zakończona. * Gdy pierwsza wartość istnieje, ale taki artykuł już został przeanalizowany, wtedy jest analizowany funkcją: {{LinkŚródtytuł|StronaSubstFunkcja}}, z poprzednimi wartościami zwracanymi, co poprzednio. ; Ogólny, nawet pod tym, co opisuje poprzedni opis, wykonywany zawsze{{dk}} Dla {{ZobaczTeż|razem_sprawdzanie_i_pobieranie}} wartości {{LinkPatrz|kod_wyniku}}, od {{Code|1}} do {{Code|4}}, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|__FUNKCJA_ARTYKULU}}, tworząca elementy artykularne, które są zapisywane w tabeli: {{Code|tablica_ksiazki_stara}} {{LinkPatrz|tablica_ksiazki_stara}}, pod kluczem: {{Code|referencja_do_nowej_formy_spisu}} {{LinkPatrz|referencja_do_nowej_formy_spisu}}, która jest inicjowana tabelą z elementów nazw z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}. * Następnie jest uruchamiana funkcja: {{LinkŚródtytuł|__FUNKCJA_SPISU}}. * Na samym końcu zwracana jest wartość, z dwoma wartościami: {{Code|nil}}, dalej jest kolejna wartoścć zwracana: {{Code|artykul}} {{LinkPatrz|artykul}}, i {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku}}. ===== W przypadku braku płynności w określeniu spisów z ustawieniami podręcznika ===== Gdy wartość: {{Code|adres_ksiazki_glownego_spisu_tresci}} {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}, nie istnieje, wtedy jest tylko wywoływana funkcja: {{LinkŚródtytuł|__FUNKCJA_SPISU}}, z pierwszym parametrem: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, i drugim: {{Code|false}}. ===== Przypadek istnienia przekierowania spisu w przestrzeni książkowej do przestrzeni nazw, nawet tych niby, do tego niepodręcznikowego ===== Jeśli wartość: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, nie jest tabelą, ale jest nie równa jeden, wtedy podobnie wywołujemy instrukcje jak w: {{LinkZobaczTeż|sprawdzanie_i_pobieranie}}. ===== Brak wyróżnionego spisu przy istnieniu głównego spisu książki ===== Jeśli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, nie istnieje, wtedy dla: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, prawdziwego: * Gdy nie istnieje problem z: {{Code|brak spisów treści do korzystanych książek na ich stronach głównych}} {{Patrz|brak spisów treści do korzystanych książek na ich stronach głównych}}, ** Sprawdzany według: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, dla strony głównej podręcznika, który też jest artykułem, wtedy ustawiamy problem: {{Code|brak spisów treści do korzystanych książek na ich stronach głównych}} {{LinkPatrz|brak spisów treści do korzystanych książek na ich stronach głównych}}, przy: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. A dla {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}} fałszywego: * Dodajemy jedynie problem: {{Code|brak spisów treści do dołączonych książek na ich stronach głównych}} {{Patrz|brak spisów treści do dołączonych książek na ich stronach głównych}}, dzięki: {{Code|{{sr|#p.DodawanieProblemowegoElementuDoTablicy|p=StronicowyParser/Problemy}}}}. === {{Śródtytuł|PrzekierownieAwaryjne}}{{Code|PrzekierownieAwaryjne}} === Gdy: {{Code|kod_wyniku_przekierowan}} {{Patrz|kod_wyniku_przekierowan}}, ma wartość nieprzydzieloną, wtedy: * Jest liczone przekierowanie na jąką stronę przekierowuje, na podstawie: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}. ; Jeśli przekierowanie istnieje, a funkcja zwraca wwartość nienilową{{dk}} * Jeżeli równa jest nazwa ta {{Code|strona}} {{LinkPatrz|strona}} nazwie modułu {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}}, wtedy funkcja zwraca wartość {{Code|0}}, * Przeciwnie są liczone nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}. Które są wykorzystane do liczenia do funkcji: {{LinkŚródtytuł|__FUNKCJA_POBIERANIE}}. * A jeżeli pierwsza wartość nie istnieje, wtedy jest zwracana ta wartość, * Przeciwnie dla wartości: {{Code|wartosc_wyniku}} {{Patrz|wartosc_wyniku}}, zero, i gdy wartość: {{Code|tabela_artykul}} {{LinkPatrz|tabela_artykul}}, przybiera wartość niefałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|StronaSubstFunkcja}}. Później zwracamy wartość: {{Code|wartosc_wyniku}} {{LinkPatrz|wartosc_wyniku}}. Jeżeli te warunki nie są spełniony instrukcji warunkowej, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|__FUNKCJA_ARTYKULU}}, do tworzenia tabel przy pomocy tej funkcji. Liczona jest nazwa strony, na który wskazuje przekierowanie, czyli: {{Code|strona}} {{LinkPatrz|strona}}, zaczyna mieć wartość: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu}}. === {{Śródtytuł|StronaZbiorcza}}{{Code|StronaZbiorcza}} === * Jest to funkcja do sprawdzania, czy to jest strona zbiorcza. Dzzięki temu uzyskujemy wartość, jako powaidomienia, niezależnie od rodzaju strony zbiorczej, czy jest nią. Jeśli {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}} przybiera wartość prawdziwą, wtedy definiowane są funkcje według: <syntaxhighlight lang="lua"> local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end; </syntaxhighlight> Potem jest liczony wynik z: {{Code|{{sr|#p.AnalizaStronaSubst|p=StronicowyParser/StronaSubst}}}}, jeśli ten wynik przybiera jakąś wartość niefałszywą, wtedy zmiennej: {{Code|artykul_analizowany.strona_zbiorcza}} {{Patrz|artykul_analizowany.strona_zbiorcza}}, jest przydzielana wartość {{Code|tak}} lub przeciwnie wartość pustą, i on jest zwracany przez tą funkcję. === {{Śródtytuł|AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego}}{{Code|AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego}} === Ta funkcja zbiera informacje o danym obiekcie, jeżeli da się go sklasyfikować, do pewnej grupy obiektów z uchwytem numerowanym lub nie, lub tylko linku z uchwytem, albo szablonu, który liczy numer artykułu dla strony lub na podstawie tego numeru stronę. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,,obiekt,kod,tab_numer)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 2 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _2 = Nazwa danego szablonu. | 3 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _3 = Tabela modyfikatorów szablonu. | 4 = {{Code|uzyskano_w_wyniku_parsowania_wywolanie_szablonu}} {{Patrz|uzyskano_w_wyniku_parsowania_wywolanie_szablonu}} | _4 = Kod danego szablonu. | 5 = {{Code|obiekt}} | _5 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/ZbieranieDanychStron/Tom V}}. | 6 = {{Code|kod}} | _6 = Jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}. | 7 = {{Code|tab_numer}} | _7 = Jak w: {{LinkPatrz|tab_numer|StronicowyParser/ZbieranieDanychStron/Tom I}}. }} Funkcja liczy podzmienną: {{Code|strona_ze_szablonem_strona_start}} {{Patrz|strona_ze_szablonem_strona_start}} w tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, przydziela jej wartość {{Code|tak}}, jeżeli strona posiada w swoim w wikikodzie szablon {{s|StronaStart}}, równe jemu lub ich kolegom. Funkcja ustawia, czy na aktualnej stronie jest spis treści, dzięki wartości: {{Code|analiza_spis_tresci_korzystane}} {{Patrz|analiza_spis_tresci_korzystane}} w tej samej tablicy. Jeżeli ten szablon ma formatowanie, wtedy ustawiana jest wartość: {{Code|formatowanie}} {{Patrz|formatowanie}}, też w nim. Jeżeli strona jest z szablonami strony zbiorczej, tzn. {{Code|{{sr|#p.strona_zbiorcza|p=StronicowyParser/obiekty}}}}, i nie ma ona zmiennych pudełkowych {{m|Pudełko}}, wtedy jest ona zakańczana. W tym rozgałęzeniu w dwóch punktach przydzielana jest wartość: {{Code|analiza_stron_korzystanych_zbiorczych}} {{Patrz|analiza_stron_korzystanych_zbiorczych}}, taka: {{Code|true}}, by drugi raz nie wejść do tego samego bloku w tych miejscach. Aby funkcja weszła w te miejsca, to musi być ona w stronie zbiorczej. Ta funkcja wchodzi w ten blok opisany powyżej, gdy mamy artykuł korzystany według wartości prawdziwej: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy istnieniu tabeli parametrów: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}. Gdy nazwa szablonu zawiera na początku znak dwukropka, tzn. {{Code|:}}, wtedy ta funkcja nic nie liczy, przeciwnie wykorzystuje szablon typu: {{s|Wypowiedzenie}} i jego kolegów, do zamieniania uchwytów na ich numeracje, a także tworzy linki na stronie aktualnej z numeracją przyporzadkowym pewnym uchwytym w tych szablonach. Funkcja dla szablonów tytułów: {{s|Śródtytuł}}, który jest zastępowany pustą wartością, on jest potrzebny, by jego szablon linku wskazywał na link do nagłówka, albo dla {{s|Śródtekst}}, by jego szablon pobierania wyświetlał jego kod wskazanym zmienną kluczem {{s|Parametr|klucz}}. Też tam są analizowane {{lk|szablony stronicowe}}, czyli nawigacji, czy numeracji, czy zbierania informacji o spisach bieżącej książki. Szablon liczy, czy jest spis treści, na aktualnej lub dołączonej stronie, by to wykorzystać do jej liczenia. Także są liczone inne elementy szablonów stronicowych, by zamieniać jedne elementy na inne, wszystko jest dla szablonów w podkategorii kategorii: {{lk2|Szablony stronicowe}}. === {{Śródtytuł|GeneralnaAnalizaSzablonuStronicowegoParsera}}{{Code|GeneralnaAnalizaSzablonuStronicowegoParsera}} === Dunkcja uruchamiająca analizę szablonu na danej stronie. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|uzyskano_w_wyniku_parsowania_wywolanie_szablonu}} | _1 = Jak w: {{LinkPatrz|uzyskano_w_wyniku_parsowania_wywolanie_szablonu}}. | 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/ZbieranieDanychStron/Tom V}}. | 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}. }} Funkcja uruchamia: {{Code|{{sr|#p.AnalizaSzablonuStronicowegoParsera|p=StronicowyParser/Potrzebne}}}}, która uruchamia funkcję: {{LinkŚródtytuł|AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego}}, do analizy danego szablonu. === {{Śródtytuł|IterowaniePoElementachTekstu}}{{Code|IterowaniePoElementachTekstu}} === Szablon iteruje funkcją: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, po szablonach w tekście, o dla każdego szablonu uruchamia funkcję: {{LinkŚródtytuł|GeneralnaAnalizaSzablonuStronicowegoParsera}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}. | 2 = {{Code|tab_numer}} | _2 = Jak w: {{LinkPatrz|tab_numer|StronicowyParser/ZbieranieDanychStron/Tom I}}. }} === Funkcje problemów szablonu nagłówka spisu treści === W tym rozdziale są przedstawione zdefiniowane funkcje problemów, jako rozszerzenie modułu: {{Code|{{ld2|StronicowyParser/Problemy}}}}, które są potrzebne też do generowania kategorii na podstawie modułu: {{Code|{{ld2|StronicowyParser/Kategorie}}}}. Też jest przedstawione generowane zmiennej, że kategorie są generowane w pierwszym lepszym {{Code|{{lk|Szablony stronicowe|szablonie stronicowym}}}}, które posiadają niepuste uchwyty. ==== {{Śródtytuł|KtorySzablonMaZwracacKategorieNaglowek}}{{Code|KtorySzablonMaZwracacKategorieNaglowek}} ==== ; Gdy parametr{{dk}} {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}}, jak jest prawdziwy{{dk}} * Jeśli nie jest ustawiony problem: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, taki: {{Code|powtórka nagłowek w stronie korzystanej}} {{Patrz|powtórka nagłowek w stronie korzystanej}}, to jest wstawiany on jest dzięki: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. * Przeciwnie jest to samo robione, tylko na początku z róznicą do poprzedniego jest ustawiany tą samą funkcją problem: {{Code|powtórka nagłówek w stronie dołączonej}} {{Patrz|powtórka nagłówek w stronie dołączonej}}. ; Inicjowanie zmiennej, który pierwszy szablon z kategorii{{dk}} {{nobold|{{lk2|Szablony stronicowe}}}}, ma zwracać kategorie, w wyniku błędu {{nobold|{{Code|{{ld|StronicowyParser|Stronicowego parssera}}}}}}{{dk}} * A także jest inicjowana podzmienna, jeśli nie była taka: {{Code|{{sr|#self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie}}}} {{Patrz|ktory_szablon_stronicowy_ma_zwracac_kategorie}} w tabeli {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, który pierwszy szablon ma zwracać kategorie '''{{ld|StronicowyParser|Stronicowego Parsera}}''', czyli wśród szablonów stronicowych. ; Definicja skrótowa i parametry, funkcji{{dk}} Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|KtorySzablonMaZwracacKategorieNaglowek-parametry}}: {{OpisParametrów | 1 = {{Code|numeracja_aktualna}} {{Patrz|numeracja_aktualna}} | _1 = Uchwyt szablonu nagłówka. | 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = Nazwa szablonu. }} ==== {{Śródtytuł|KtorySzablonMaZwracacKategorieTekst}}{{Code|KtorySzablonMaZwracacKategorieTekst}} ==== Jest to samo, co w funkcji: {{LinkŚródtytuł|KtorySzablonMaZwracacKategorieNaglowek}}, tylko z tą równicą, że mamy problem: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}} lub {{Code|nagłowek w tekście rozdziału w stronie dołączonej}} {{Patrz|nagłowek w tekście rozdziału w stronie dołączonej}}. Definicji skrótowa funkcji: <syntaxhighlight lang="lua"> local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Jak w: {{LinkZobaczTeż|KtorySzablonMaZwracacKategorieNaglowek-parametry}}. | komórka1 = tak }} === {{Śródtytuł|CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu}}{{Code|CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu}} === Funkcja sprawdzająca, czy jest taki ustawiony problem: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{LinkPatrz|nagłówek w tekście rozdziału w stronie korzystanej}}, na podstawie: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyJestTakiProblemJakoElementTablicySzablonuNapisuWprowadzeniaTekstuPozaNim()...end; </syntaxhighlight> Parametry funkcji: * Brak. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> co206m9ccgwu8jo2o9lunvmmxatpgs7 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V 4 63920 556284 556283 2026-09-14T12:00:06Z Persino 2851 /* Etapy wykonywania czynności */ 556284 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linią, byłoby takie coś pomiędzy ewentualnie znakami nowych linii, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii zgłasza niedopasowanie, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa być takich rozdziałów dopasowywać. Ma dopasowywać tylko normalne linie niebędące pozycjami listy lub rozdziałami równaniowymi. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwraca wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,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_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hamty9qk1ewgomu0rv0jpbs0loezvvf 556285 556284 2026-09-14T12:01:33Z Persino 2851 /* Parametry zwracane */ 556285 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} == Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) ... ---- ciało funkcji zwracanej end; end; </syntaxhighlight> Parametry ogólne funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}. | 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania. | 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak }} Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}: {{OpisParametrów | 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy. | 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy. }} ; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}} Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek: <syntaxhighlight lang="lua"> if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then </syntaxhighlight> ; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}} * Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać: : A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}. * Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza: : Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku. ; Sprawdzanie niepustych linii{{dk}} * Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów: : Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}. Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii. * Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie. * Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej. ; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}} * Zerowanie się pewnych wartości: ** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane. Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie. ; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}} {{OpisParametrów | 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje. | 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce. | 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak | 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy. }} == {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} == Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak | 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać. | 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst. | 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie. | 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}. | 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}. | 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi. }} ; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}} * {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, * {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać, * Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek. : Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. : Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość. Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami. Funkcja zwraca wyniku w postaci wartości szegu zwracanych: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; </syntaxhighlight> Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu: {{OpisParametrów | 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak | 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka. | 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka. | 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania. | 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka. | 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak | 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak | 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku. | 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec. | 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu. | 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom. }} W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego. == {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} == Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście. Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak }} === {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} === Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local str_spacja_lub_zerowy_naglowek=function(tekst)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia. }} === Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny === Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi. === Etapy alternatywy instrukcji warunkowej === W funkcji są trzy etapy instrukcji warunkowej: * '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''. ==== Pierwszy etap ==== ; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania. * W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku. ; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}} * Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie. ==== Etap drugi ==== ; To dotyczy, że takiego dopasowania pasującego nie znalazł. * Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach. * A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. * Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona. * Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku. ==== Etap trzeci ==== ; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł. * Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}. * A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane. === Parametry wychodzące z funkcji === * Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane: Funkcja zwraca wartości określone przez kod: <syntaxhighlight lang="lua"> return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; </syntaxhighlight> === Wytłumaczenia parametrów zwracanych === Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji: {{OpisParametrów | 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania, | 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec, | 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka, | 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka. }} == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} == Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego. Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru. Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów. Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}: * Funkcja działa w pętli nieskończonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią, * W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak | 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne. | 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego. | 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}. }} Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania: {{OpisParametrów | 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak | 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak | 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak }} === Etapy zwracania przez funkcję elementów === * Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej. ==== Uzyskanie linii według ogólnego wzoru ==== * Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linią, byłoby takie coś pomiędzy ewentualnie znakami nowych linii, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście. ==== Początek i koniec uzyskanej linii według powyższego sposobu ==== * Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero. ==== Brak dopasowania linii ==== * A jeżeli dopasowanie tej linii zgłasza niedopasowanie, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}). ==== Rozdział równaniowy ==== * Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa być takich rozdziałów dopasowywać. Ma dopasowywać tylko normalne linie niebędące pozycjami listy lub rozdziałami równaniowymi. ==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ==== : Znaki odstępów - linia to białe znaki: * Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków. ==== Przypadek istnienia linii nie składającej się ze znaków odstępów ==== : Rozdział spisu treści i rozdział zerowy: * Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą. * A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą. ==== Przypadek istnienia, lub nie, rozdziału zerowego ==== ; Gdy znaleziono taki rozdział zerowy{{dk}} * Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości. * Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii. ; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}} * Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi. * Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz. ; Sytuacja niespełnienia poprzednich warunków{{dk}} * Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}. * Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz. ; Zwracane wartości{{dk}} : Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. == {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} == Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}. === Etapy wykonywania czynności === Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link: * Jeśli tak to zwraca wartość pradziwą. * A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link. Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana. * Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą. Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwraca wartość fałszywą. === Inne elementy dokumentacji === Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,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_oddzielone,czy_wszystkie_linki)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą. | 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego. }} Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą. Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza. == {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} == Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli. Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak | 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak | 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak | 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa. | 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa. }} Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}. === Parametry zwracane === ; Pierwszy parametr{{dk}} * Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem, ; Drugi parametr{{dk}} * Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relację, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem, * Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych. === Początkowa kolejność wykonywania kodu === Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj: <syntaxhighlight lang="lua"> local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); ---- Ustalenie wzoru kodowania, czyli jest to dowolny kod; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do ---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii; local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); </syntaxhighlight> === Sprawdzenie poprzez instrukcję warunkową === Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}. === Kolejne dalsze kroki === * Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. * A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}. === Zwracane wartości funkcji === Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia. ==== Przypadek sukcesu ==== Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry: <syntaxhighlight lang="lua"> return liczba_linki_nierozdzialowe_szablonu,true; </syntaxhighlight> ==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ==== W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości: <syntaxhighlight lang="lua"> return liczba_spisowa,false; </syntaxhighlight> W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu. == {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> 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)...end; </syntaxhighlight> Parametry funkcji: {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0qo5lknn61picwg5jwii5y7vw7ga31m Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI 4 63921 556286 556262 2026-09-14T12:05:56Z Persino 2851 /* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */ 556286 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego}}{{Code|p.PoliczKoniecZakodowanegoTekstuArtykularnego}} == == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje, od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|liczba_start}} | _2 = Jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony we specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy niej, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia, i znajduje tą nazwę, a więc tego szablonu. Ten kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jego numeru: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnych zdefiniowanym osobnych rozdziałach, które mieszczą się w spisie książki, i są to pewne napisy wprowadzenia tekstu z tymi osobnymi tymi, czego dotyczą, co usuwamy, co zostawiamy, w ich, w ich napisach wprowadzenia tekstu, wraz ich zawartościami, a te teksty, to właśnie modyfikujemy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, | 2 = {{Code|tab_wzor}} {{Patrz|tab_wzor}} | _2 = Tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście: {{Code|tekst}} {{LinkPatrz|tekst}}, | 3 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka3 = tak }} Wartość zwracana: {{OpisParametrów | 1 = Jest to zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury, w którym usuwaliśmy pewne elementy. | komórka1 = tak }} Ten wzor do wydzielania tekstu z drugą wartością logiczną, jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego, od pierwszej pozycji tego wydzielonego tekstu, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możemy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}: <syntaxhighlight lang="lua"> p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; </syntaxhighlight> * Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> sh4gmb091v0ajii3qk3nbrinjeftklq 556287 556286 2026-09-14T12:21:18Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 556287 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego}}{{Code|p.PoliczKoniecZakodowanegoTekstuArtykularnego}} == == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje, od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|liczba_start}} | _2 = Jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony we specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy niej, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia, i znajduje tą nazwę, a więc tego szablonu. Ten kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jego numeru: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnych zdefiniowanym osobnych rozdziałach, które mieszczą się w spisie książki, i są to pewne napisy wprowadzenia tekstu z tymi osobnymi tymi, czego dotyczą, co usuwamy, co zostawiamy, w ich, w ich napisach wprowadzenia tekstu, wraz ich zawartościami, a te teksty, to właśnie modyfikujemy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, | 2 = {{Code|tab_wzor}} {{Patrz|tab_wzor}} | _2 = Tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście: {{Code|tekst}} {{LinkPatrz|tekst}}, | 3 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka3 = tak }} Wartość zwracana: {{OpisParametrów | 1 = Jest to zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury, w którym usuwaliśmy pewne elementy. | komórka1 = tak }} Ten wzor do wydzielania tekstu z drugą wartością logiczną, jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego, od pierwszej pozycji tego wydzielonego tekstu, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł początki tych nagłówków, za pomocą tego pierwszego, jak nie znalazł, to według drugiego sposobu, to szuka następnych nagłówków, po końcu wyszukania udanego wcześniejszego, jeżeli znalazł według tego pierwszego, to szuka parametrów według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł to zerowe, zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możemy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}: <syntaxhighlight lang="lua"> p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; </syntaxhighlight> * Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ropr2pk2nlvlfogk95ghoiou30gsyrw 556288 556287 2026-09-14T12:28:24Z Persino 2851 /* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */ 556288 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego}}{{Code|p.PoliczKoniecZakodowanegoTekstuArtykularnego}} == == {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} == Funkcja wyszukuje, od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = {{Code|liczba_start}} | _2 = Jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać. | 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. | 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}. }} Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony we specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy niej, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia, i znajduje tą nazwę, a więc tego szablonu. Ten kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jego numeru: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu. Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}: <syntaxhighlight lang="lua"> return liczba_koniec_szablon,norma_wzoru; </syntaxhighlight> Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób: <syntaxhighlight lang="lua"> ---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony; if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; </syntaxhighlight> == {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} == Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc. Elementy bibliografii i literatury mieszczą się w pewnych zdefiniowanym osobnych rozdziałach, które mieszczą się w spisie książki, i są to pewne napisy wprowadzenia tekstu z tymi osobnymi tymi, czego dotyczą, co usuwamy, co zostawiamy, w ich, w ich napisach wprowadzenia tekstu, wraz ich zawartościami, a te teksty, to właśnie modyfikujemy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, | 2 = {{Code|tab_wzor}} {{Patrz|tab_wzor}} | _2 = Tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście: {{Code|tekst}} {{LinkPatrz|tekst}}, | 3 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka3 = tak }} Wartość zwracana: {{OpisParametrów | 1 = Jest to zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury, w którym usuwaliśmy pewne elementy. | komórka1 = tak }} Ten wzor do wydzielania tekstu z drugą wartością logiczną, jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={ [1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,}, [2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,}, }; </syntaxhighlight> Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji. Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego, od pierwszej pozycji tego wydzielonego tekstu, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}. Jak znalazł dane tych nagłówków, za pomocą tego pierwszego, jak nie znalazł, to według drugiego sposobu, to szuka następnych nagłówków, po końcu wyszukania udanego wcześniejszego, jeżeli znalazł według tego pierwszego, to szuka parametrów według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł to zerowe, zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możemy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy. To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję. W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są: * Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}: <syntaxhighlight lang="lua"> p.szablony_przypisowe={ ["Przypisy"]=true, ["Uwagi"]=true, ["Przypisy-lista"]=true, }; </syntaxhighlight> * Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}: <syntaxhighlight lang="lua"> p.szablony_licencji={ ["Licencja"]=true, }; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> os9me4s4hybsx9a71zukq8kzcuxjyhi Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część II 4 64128 556333 554383 2026-09-14T14:58:27Z Persino 2851 /* {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} */ 556333 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) === Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}. Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem: <syntaxhighlight lang="lua"> local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil); </syntaxhighlight> A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}. Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej. === Kod wspólny === ==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ==== W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Wystepowanie(linia,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem. ; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}} * Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem. * A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono. Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona. ===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ===== Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}. Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów: * {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. * Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinie(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. * Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. * W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}. Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}. ===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ===== Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinieZnacznikowe(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu. Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich. Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu. ====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ====== Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CenterZnacznikLinia(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga). ====== Dalszy opis funkcji ====== Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy. W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana. ===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ===== Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function spis_tresci(wystepowanie_linkow,hn_number)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}}, * {{Code|hn_number}} {{Patrz|hn_number}} - to jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo. Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}. ====== {{Śródtytuł|Spis}}{{Code|Spis}} ====== Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. ; Konstrukcja funkcji{{dk}} * Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści. * Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania. Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}. W pozostałych wypadkach funkcja nie zwraca żadnego wyniku. ====== Dalszy opis funkcji ====== ; Jeśli znaleziono dopasowanie{{dk}} Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany. ; Gdy jednak nie było takiego przypadku{{dk}} W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}. ; Inny wypadek{{dk}} W innym wypadku nie jest zwracana żadna wartość. ===== Kod dalszy funkcji ===== ====== Warunki wstępne ====== Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}. * Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane. * Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału, '''dodatniego równaniowego''', czy '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii. ====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ====== ; Iterator dla danej linii{{dk}} * Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych. * Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: ** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}. ; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}} * W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, ** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. ** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, * A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie. ; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}} * A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, * A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. * A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. ; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}} * Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy już nie, tak jak dla obiektu {{Code|SZABLON}}. ===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ===== ====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ====== ; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}} * Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii. ** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, ** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. * A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}}, ** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie. ====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ====== ; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}} * Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}}, ** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, ** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, ** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}. ====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ====== * Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, ** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, ** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana, * W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}. ===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ===== Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}. ===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} ===== Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa: * wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym. * Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono. === Kod funkcji iteratora - funkcji zwracanej przez jego generatora === Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}. ; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}} * Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. ; Rozdział dodatni równaniowy{{dk}} * Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}. * Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami. * W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość). ; Pierwsza anonimowa funkcja{{dk}} * Rozdziały w tym nagłówki spisu treści lub rzeczy ** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. ** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. ** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. ** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}. * Dalsze obliczenia spisowe ** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą. ; Druga anonimowa funkcja{{dk}} * Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana. ; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}} * Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według: <syntaxhighlight lang="lua"> local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}. === Wartości zwracane przez iterator === Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}: <syntaxhighlight lang="lua"> {naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany; </syntaxhighlight> ; Gdzie parametry wartości zwracanych{{dk}} * {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}, * {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie, * {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji. Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> s5g1vb09hjhjlohegjise58w1ofprpi 556334 556333 2026-09-14T15:18:19Z Persino 2851 /* Kod dalszy funkcji */ 556334 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) === Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}. Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem: <syntaxhighlight lang="lua"> local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil); </syntaxhighlight> A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}. Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej. === Kod wspólny === ==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ==== W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Wystepowanie(linia,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem. ; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}} * Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem. * A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono. Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona. ===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ===== Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}. Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów: * {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. * Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinie(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. * Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. * W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}. Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}. ===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ===== Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinieZnacznikowe(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu. Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich. Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu. ====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ====== Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CenterZnacznikLinia(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga). ====== Dalszy opis funkcji ====== Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy. W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana. ===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ===== Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function spis_tresci(wystepowanie_linkow,hn_number)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}}, * {{Code|hn_number}} {{Patrz|hn_number}} - to jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo. Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}. ====== {{Śródtytuł|Spis}}{{Code|Spis}} ====== Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. ; Konstrukcja funkcji{{dk}} * Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści. * Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania. Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}. W pozostałych wypadkach funkcja nie zwraca żadnego wyniku. ====== Dalszy opis funkcji ====== ; Jeśli znaleziono dopasowanie{{dk}} Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany. ; Gdy jednak nie było takiego przypadku{{dk}} W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}. ; Inny wypadek{{dk}} W innym wypadku nie jest zwracana żadna wartość. ===== Kod dalszy funkcji ===== ====== Warunki wstępne ====== Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}. * Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane. * Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału albo '''dodatniego równaniowego''', bądź opcjonalnie do '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii. ====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ====== ; Iterator dla danej linii{{dk}} * Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych. * Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: ** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}. ; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}} * W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, ** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. ** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, * A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie. ; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}} * A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, * A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. * A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. ; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}} * Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy już nie, tak jak dla obiektu {{Code|SZABLON}}. ===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ===== ====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ====== ; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}} * Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii. ** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, ** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. * A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}}, ** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie. ====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ====== ; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}} * Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}}, ** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, ** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, ** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}. ====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ====== * Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, ** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, ** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana, * W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}. ===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ===== Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}. ===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} ===== Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa: * wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym. * Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono. === Kod funkcji iteratora - funkcji zwracanej przez jego generatora === Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}. ; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}} * Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. ; Rozdział dodatni równaniowy{{dk}} * Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}. * Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami. * W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość). ; Pierwsza anonimowa funkcja{{dk}} * Rozdziały w tym nagłówki spisu treści lub rzeczy ** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. ** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. ** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. ** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}. * Dalsze obliczenia spisowe ** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą. ; Druga anonimowa funkcja{{dk}} * Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana. ; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}} * Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według: <syntaxhighlight lang="lua"> local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}. === Wartości zwracane przez iterator === Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}: <syntaxhighlight lang="lua"> {naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany; </syntaxhighlight> ; Gdzie parametry wartości zwracanych{{dk}} * {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}, * {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie, * {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji. Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> o67a02u5u7sxhr7ppkgppasjflqa53v 556335 556334 2026-09-14T15:25:20Z Persino 2851 /* Iterator po rozważanej zmiennej, czyli iteracja po tekście */ 556335 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) === Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}. Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem: <syntaxhighlight lang="lua"> local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil); </syntaxhighlight> A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}. Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej. === Kod wspólny === ==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ==== W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Wystepowanie(linia,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem. ; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}} * Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem. * A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono. Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona. ===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ===== Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}. Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów: * {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. * Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinie(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. * Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. * W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}. Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}. ===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ===== Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinieZnacznikowe(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu. Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich. Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu. ====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ====== Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CenterZnacznikLinia(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga). ====== Dalszy opis funkcji ====== Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy. W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana. ===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ===== Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function spis_tresci(wystepowanie_linkow,hn_number)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}}, * {{Code|hn_number}} {{Patrz|hn_number}} - to jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo. Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}. ====== {{Śródtytuł|Spis}}{{Code|Spis}} ====== Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. ; Konstrukcja funkcji{{dk}} * Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści. * Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania. Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}. W pozostałych wypadkach funkcja nie zwraca żadnego wyniku. ====== Dalszy opis funkcji ====== ; Jeśli znaleziono dopasowanie{{dk}} Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany. ; Gdy jednak nie było takiego przypadku{{dk}} W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}. ; Inny wypadek{{dk}} W innym wypadku nie jest zwracana żadna wartość. ===== Kod dalszy funkcji ===== ====== Warunki wstępne ====== Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}. * Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane. * Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału albo '''dodatniego równaniowego''', bądź opcjonalnie do '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii. ====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ====== ; Iterator dla danej linii{{dk}} * Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych. * Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: ** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}. ; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}} * W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, ** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. ** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, * A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie. ; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}} * A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, * A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, w przypadku badania jego nazwy, a potem z tym zwróconym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. * A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. ; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}} * Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy już nie, tak jak dla obiektu {{Code|SZABLON}}. ===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ===== ====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ====== ; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}} * Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii. ** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, ** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. * A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}}, ** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie. ====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ====== ; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}} * Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}}, ** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, ** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, ** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}. ====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ====== * Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, ** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, ** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana, * W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}. ===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ===== Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}. ===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} ===== Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa: * wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym. * Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono. === Kod funkcji iteratora - funkcji zwracanej przez jego generatora === Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}. ; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}} * Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. ; Rozdział dodatni równaniowy{{dk}} * Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}. * Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami. * W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość). ; Pierwsza anonimowa funkcja{{dk}} * Rozdziały w tym nagłówki spisu treści lub rzeczy ** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. ** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. ** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. ** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}. * Dalsze obliczenia spisowe ** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą. ; Druga anonimowa funkcja{{dk}} * Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana. ; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}} * Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według: <syntaxhighlight lang="lua"> local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}. === Wartości zwracane przez iterator === Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}: <syntaxhighlight lang="lua"> {naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany; </syntaxhighlight> ; Gdzie parametry wartości zwracanych{{dk}} * {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}, * {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie, * {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji. Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jfo57xo3yt02vgb36g6tv203iffvfz1 556336 556335 2026-09-14T15:27:09Z Persino 2851 /* Iterator po rozważanej zmiennej, czyli iteracja po tekście */ 556336 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) === Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}. Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem: <syntaxhighlight lang="lua"> local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil); </syntaxhighlight> A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}. Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej. === Kod wspólny === ==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ==== W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Wystepowanie(linia,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}, * {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem. ; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}} * Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem. * A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono. Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona. ===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ===== Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}. Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów: * {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. * Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinie(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. * Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. * W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}. Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}. ===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ===== Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinieZnacznikowe(zawartosc)...end; </syntaxhighlight> Parametry funkcji: * {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu. Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich. Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu. ====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ====== Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CenterZnacznikLinia(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga). ====== Dalszy opis funkcji ====== Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy. W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana. ===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ===== Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function spis_tresci(wystepowanie_linkow,hn_number)...end; </syntaxhighlight> Parametry funkcji: * {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}}, * {{Code|hn_number}} {{Patrz|hn_number}} - to jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo. Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}. ====== {{Śródtytuł|Spis}}{{Code|Spis}} ====== Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: * Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. ; Konstrukcja funkcji{{dk}} * Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści. * Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania. Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}. W pozostałych wypadkach funkcja nie zwraca żadnego wyniku. ====== Dalszy opis funkcji ====== ; Jeśli znaleziono dopasowanie{{dk}} Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany. ; Gdy jednak nie było takiego przypadku{{dk}} W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}. ; Inny wypadek{{dk}} W innym wypadku nie jest zwracana żadna wartość. ===== Kod dalszy funkcji ===== ====== Warunki wstępne ====== Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}. * Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane. * Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału albo '''dodatniego równaniowego''', bądź opcjonalnie do '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii. ====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ====== ; Iterator dla danej linii{{dk}} * Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych. * Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: ** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}. ; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}} * W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, ** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. ** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, * A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie. ; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}} * A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, * A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, w przypadku badania jego nazwy, a potem z tym zwróconym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. * A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. ; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}} * Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy nie są te obiekty, to podobnie liczymy dla obiektu {{Code|SZABLON}}. ===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ===== ====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ====== ; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}} * Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii. ** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, ** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. * A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}}, ** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie. ====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ====== ; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}} * Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}}, ** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, ** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, ** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}. ====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ====== * Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, ** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, ** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana, * W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}. ===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ===== Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}. ===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} ===== Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa: * wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym. * Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono. === Kod funkcji iteratora - funkcji zwracanej przez jego generatora === Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}. ; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}} * Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. ; Rozdział dodatni równaniowy{{dk}} * Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}. * Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami. * W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość). ; Pierwsza anonimowa funkcja{{dk}} * Rozdziały w tym nagłówki spisu treści lub rzeczy ** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. ** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. ** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. ** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}. * Dalsze obliczenia spisowe ** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą. ; Druga anonimowa funkcja{{dk}} * Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana. ; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}} * Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według: <syntaxhighlight lang="lua"> local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}. === Wartości zwracane przez iterator === Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}: <syntaxhighlight lang="lua"> {naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany; </syntaxhighlight> ; Gdzie parametry wartości zwracanych{{dk}} * {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}, * {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie, * {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji. Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7bhadon5u6a0rzlv0ewkv0zhut4b4ah 556359 556336 2026-09-14T19:05:35Z Persino 2851 556359 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} == Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) === Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}. Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem: <syntaxhighlight lang="lua"> local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil); </syntaxhighlight> A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}. Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej. === Kod wspólny === ==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ==== W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Wystepowanie(linia,funkcja1,funkcja2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}, | 2 = {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} | _2 = funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem. }} ; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}} * Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem. * A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono. Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona. ===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} ===== Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}. Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów: * {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, * {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. * Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinie(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.| komórka1 = tak }} * Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}. * W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}. Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}. ===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} ===== Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna. Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function RozwazajLinieZnacznikowe(zawartosc)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} | _1 = Zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu. }} Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich. Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu. ====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ====== Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CenterZnacznikLinia(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. | komórka1 = tak }} Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga). ====== Dalszy opis funkcji ====== Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy. W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana. ===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} ===== Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function spis_tresci(wystepowanie_linkow,hn_number)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} | _1 = Zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}}, | 2 = {{Code|hn_number}} {{Patrz|hn_number}} | _2 = To jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo. }} Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}. ====== {{Śródtytuł|Spis}}{{Code|Spis}} ====== Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function Spis(szablon,obiekt,kod)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. | komórka1 = tak }} ; Konstrukcja funkcji{{dk}} * Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści. * Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania. Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}. W pozostałych wypadkach funkcja nie zwraca żadnego wyniku. ====== Dalszy opis funkcji ====== ; Jeśli znaleziono dopasowanie{{dk}} Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany. ; Gdy jednak nie było takiego przypadku{{dk}} W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}. ; Inny wypadek{{dk}} W innym wypadku nie jest zwracana żadna wartość. ===== Kod dalszy funkcji ===== ====== Warunki wstępne ====== Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}. * Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane. * Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału albo '''dodatniego równaniowego''', bądź opcjonalnie do '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii. ====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ====== ; Iterator dla danej linii{{dk}} * Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych. * Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}: ** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}. ; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}} * W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, ** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku. ** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki, * A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie. ; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}} * A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}}, * A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, w przypadku badania jego nazwy, a potem z tym zwróconym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}. * A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}. ; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}} * Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy nie są te obiekty, to podobnie liczymy dla obiektu {{Code|SZABLON}}. ===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} ===== ====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ====== ; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}} * Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii. ** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}}, ** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}. * A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}}, ** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie. ====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ====== ; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}} * Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}}, ** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}}, ** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej, ** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}. ====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ====== * Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej, ** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana, ** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana, * W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}. ===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału ===== Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}. ===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} ===== Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa: * wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym. * Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono. === Kod funkcji iteratora - funkcji zwracanej przez jego generatora === Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}. ; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}} * Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. ; Rozdział dodatni równaniowy{{dk}} * Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}. * Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami. * W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość). ; Pierwsza anonimowa funkcja{{dk}} * Rozdziały w tym nagłówki spisu treści lub rzeczy ** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}. ** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}. ** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}. ** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}. * Dalsze obliczenia spisowe ** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą. ; Druga anonimowa funkcja{{dk}} * Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana. ; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}} * Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według: <syntaxhighlight lang="lua"> local linia_temp; linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true); </syntaxhighlight> Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}. === Wartości zwracane przez iterator === Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}: <syntaxhighlight lang="lua"> {naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany; </syntaxhighlight> ; Gdzie parametry wartości zwracanych{{dk}} {{OpisParametrów | 1 = {{Code|naglowek}} | _1 = Jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}. | 2 = {{Code|linia}} | _2 = Jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}. | 3 = {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} | _3 = Jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie. | 4 = {{Code|poczatek_rozdzialu}} | _4 = Jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}. | 5 = {{Code|numeracja_rozdzialu}} | _5 = Jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}. | 6 = {{Code|czy_rozdzial_centrowany}} | _6 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}. }} Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji. Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> b8ji4g2j8p1ewxr69xahy88msvcaqj3 Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część II 4 64134 556352 554806 2026-09-14T17:46:53Z Persino 2851 556352 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}{{Code|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}} == Jest to dokończenie dokumentacji funkcji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}}}, ze strony: {{lr2|Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. === Opis działania funkcji z użytymi funkcjami lokalnymi zdefiniowanych w tej funkcji === Te funkcje, które są lokalne, są zdefiniowane w funkcji głównej, by je użyć w niej, i one jedynie służą na jej użytek. ==== Artykuły przeanalizowane lub brak pewnych elementów bazy ==== Aby pobrać dane artykułu (strony) książki, ewentualnie zwykłej strony, nie podręcznika, uruchamiana jest funkcja: {{LinkŚródtytuł|__FUNKCJA_POBIERANIE|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. Ta funkcja zwraca wartości, charakteryzująca, czy ta strona została zanalizowana, nawet ta aktualna, jakie są dane danej książki, itd. Jeżeli pierwszy parametr zwracany tej powyżej funkcji nie ma wartości, wtedy funkcja się zakańcza z wynikami: <syntaxhighlight lang="lua"> return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna; </syntaxhighlight> A jeżeli jednak ta wartość jest zero, i taki artykuł został zrewidowany i sprawdzony, a także zbazowany, w takim razie działa funkcja: {{LinkŚródtytuł|StronaSubstFunkcja|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, i zwracany jest wynik jak poprzednio. ==== Strony (artykuły) poza zakresem obsługiwanym książkowym ==== Jeśli ta funkcja nie została zakończona wcześniej, w tym wypadku, jeżeli strona nie jest artykułem książkowym, wtedy jest ustawiany kod problemu {{Code|strony poza zakresem obsługiwanym}} {{LinkPatrz|strony poza zakresem obsługiwanym|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, przy pomocy: {{Code|{{sr|#p.DodawanieProblemowegoElementuDoTablicy|p=StronicowyParser/Problemy}}}}. ==== Tworzenie bazy artykułu ==== Dla artykułu nieprzeanalizowanego tworzone są tabele artykułu, dzięki: {{LinkŚródtytuł|__FUNKCJA_ARTYKULU|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, dlatego, którego szablony zostaną przeanalizowane, zebrane zostaną dane artykułu (strony). Jedna ze zmiennych jest tablica: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, charakeryzująca dane zebrane specjalnie dla artykułów danej książki. ==== Spisy książki ==== Zbierane są wiadomości o wszystkich spisach książki danego artykułu, na podstawie wywołania: {{LinkŚródtytuł|InneInformacjePrzebneDoAnalizowanejKsiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. <syntaxhighlight lang="lua"> local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki(); </syntaxhighlight> * Jeżeli wychodzi, że spis już został przeanalizowany wcześniej, ale względem przekierowań strony, wtedy funkcja się zakańcza z wartością wskazywanym przez jego drugi parametrem, czyli z: {{Code|wynik_bledu}} * Jeżeli jego pierwsza wartość istnieje. Ta funkcja też zwraca parametr: {{Code|kod_wyniku_bazowy}} {{Patrz|kod_wyniku_bazowy}} (to jest nic innego jak: {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}), który przyrównujemy do: {{Code|kod_wyniku_przekierowan}} {{LinkPatrz|kod_wyniku_przekierowan|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. * Trzecim jego parametrem jest: {{Code|artykul_bazowy}} {{Patrz|artykul_bazowy}} (to jest nic innego jak: {{Code|artykul}} {{LinkPatrz|artykul|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}), mówiący, jaki jest artykuł bazowy danego przekierowania, czyli na co wskazuje przekierowaanie. ==== Spis główny książki do spisu głównego bieżącego podręcznika ==== ; Jeżeli{{dk}} {{nobold|{{Code|adres_woluminu_bazowego_spisu_rzeczy}} {{LinkPatrz|adres_woluminu_bazowego_spisu_rzeczy|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}}}, zmiennej{{dk}} {{nobold|{{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}}}, ale wartość{{dk}}{{nobold|{{Code|kod_wyniku_bazowy}} {{LinkPatrz|kod_wyniku_bazowy}}}}, istnieje, wtedy zmienne{{dk}} * {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, uzyskują wartości kolejno w sposób ponumerowany z: {{Code|adres_woluminu_bazowego_spisu_rzeczy}} {{LinkPatrz|adres_woluminu_bazowego_spisu_rzeczy|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. * A artykuł bazowy: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} z: {{Code|artykul_bazowy}} {{LinkPatrz|artykul_bazowy}}. ; Tabele przestrzenne poszczególnych nazw książki{{dk}} * Tablice kolejne przestrzenne, w których zebrane są informacje o ksiązkach (artykułach), liczymy kolejno ze zmiennych kolejno z kolejnych elementów tablicy ponumerowanej z {{Code|referencja_do_nowej_formy_spisu}} {{LinkPatrz|referencja_do_nowej_formy_spisu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. Uzyskane tabele są to tabele dla nazw adresu spisu głównego książki, na które wskazuje przekierowanie do bieżącego artykułu podręcznika, który też taki musi być, więc główny. ==== Operowanie na tablicy spisu książki ==== Gdy spis: {{Code|spis}} {{LinkPatrz|spis|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, istnieje aktualnej książki, co jest kluczem zmiennej: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}: * Wtedy gdy mamy do czynienia z przekierowaniami dla aktualnej strony, wtedy liczymy z funkcji: {{Code|{{sr|#p.OdpowiednikNaPrzemianArtykularnychStronWoluminu|p=StronicowyParser/Potrzebne}}}}, * Liczymy artykuł: {{Code|artykul}} {{LinkPatrz|artykul|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, i kod wyniku: {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, dla stron prowadzących przez przekierowanie, lub będących nieprzekierowaniami, * Drugim parametrem jest zwracanym przez tą funkcję, czyli to jest: {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, którego w dalszej instrukcji warunkowej mamy w niej: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, która przyjmuje wartość zmiennej: {{Code|artykul}} {{LinkPatrz|artykul|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, * Dalej liczymy jedynie: {{LinkŚródtytuł|__FUNKCJA_ARTYKULU|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. A na samym końcu po tych instrukcjach warunkowych liczymy: {{Code|kod_wyniku_przekierowan}} {{LinkPatrz|kod_wyniku_przekierowan|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, jeżeli owa nie ma wartości, wtedy ma ona wartość: {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. ==== Tworzenie nazwy modułu ==== Liczymy: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, z parametrów: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy funkcji: {{Code|{{sr|#p["NazwaModułu"]|p=Nazwy/Tom III}}}}. ==== Przekierowania dla stron bez spisu ==== ; Operacje na przekierowaniach, jeśli istnieją{{dk}} * Liczymy: {{Code|wynik}} {{Patrz|wynik}}, z funkcji: {{LinkŚródtytuł|PrzekierownieAwaryjne|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, która wywoływana jest bez parametrów. * Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}} jest zmienną o wartości prawdziwej, wtedy zmienną: {{Code|self.nazwa_modulu_biezaca}} {{Patrz|self.nazwa_modulu_biezaca}}, równa się wartości zmiennej {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. ; Przedwczesne zakończenie funkcji z wartościami zwracanymi{{dk}} * Gdy zmienna: {{Code|wymik}} {{LinkPatrz|wynik}}, jest wartością odpowiadającej elementowi prawdziwemu, wtedy funkcja zakańcza się z wartością o tej zmiennej, co świadczy, że strona została już przeanalizowana. ==== Zmienne nazw danego bieżącego artykułu książki ==== ; Gdy{{dk}} {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}}, jest o wartości odpowiadającej prawdziwej{{dk}} * Wtedy zmienne nazw odpowadającej książki bieżącego artykułu dla książki rozważanej, jeśli nie istnieją, to są one tworzone, w tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, o kluczach: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_woluminu}} {{Patrz|nazwa_przestrzeni_woluminu}}, {{Code|nazwa_woluminu}} {{Patrz|nazwa_woluminu}} i {{Code|nazwa_podstrony_woluminu}} {{Patrz|nazwa_podstrony_woluminu}}, elementy, którym kolejno przydzielamy wartości: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}. ==== Nazwa modułu aktualna lub bieżąca ==== Liczymy nazwę: {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, która jest wykorzystywana do liczenia do stron zbiorczych, jest to alternatywna strona, na której ma wyświetlić stronę zbiorczą, to się dzieje dzięki podzmiennej: {{Code|alternatywna}} {{Patrz|alternatywna}}, w tabeli: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. Do liczenia są wykorzystywane zmienne ze strony: {{s|Podręcznik/Ustawienia/}}. ==== Dane artykułu i książki, bieżącej ==== ; Dla strony bieżącej, według zmiennej{{dk}} {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}}{{dk}} * Jest ustawiana zmienna o kluczu {{Code|artykul_biezacy}} {{Patrz|artykul_biezacy}}, dla zmiennej: {{Code|artykul_analizowany}} {{LinkPatrz|artykul_analizowany|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, jej jest dawana wartość {{Code|true}}, tzn. czy dany artykuł jest bieżący. * A dalej dla zmiennej: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, o kluczu: {{Code|ksiazka_analizowana}} {{Patrz|ksiazka_analizowana}}, jest przydzielana wartość {{Code|true}}, mówiąca, czy rozważana książka jest bieżąca. ==== Informacje o analizowanym artykule ==== Jest tworzona zmienna pusta: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli nie istnieje, i jej podtablica ma być też pusta o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, jeśli nie istnieje. Dalej są generowane podzmienne z: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki2}}, dotyczących poszczególnych obiektów obsługiwanych przez '''{{ld|StronicowyParser|Stronicowy Parser}}''', a elementy wewnętrz jej: * Dla każdych z nich w śródku są zmienne: {{Code|CzyLink}} {{Patrz|CzyLink}}, i {{Code|CzyNum}} {{Patrz|CzyNum}}, mówiące, z jakiem typem obiektu mamy do czynienia, za pomocą wartości logicznych, tzn. kolejno, czy to są obiekty, do których istnieje link (z początkiem '''Link''', a nie '''Pobierz'''), i czy on jest numerowany przez to oprogramowanie. ==== Strona zbiorcza ==== Dla stron zbiorczych liczymy zawartość strony zbiorczej {{Code|strona_zbiorcza}} {{Patrz|strona_zbiorcza}}, jeżeli owo w ogóle taka jest, czyli za pomocą funkcji: {{LinkŚródtytuł|StronaZbiorcza|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, bez parametrów, którego wnętrze jedynie się uruchamia, gdy strona jest korzystana, tzn. gdy zmienna: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}} przyjmuje wartość prawdziwą. ==== Pełna nazwa książki ==== Liczymy pełną nazwę książki danego artykułu przy zmiennej: {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, z parametrów: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, oraz dla nazwy artykułu, którym jest ciąg znakowy pusty, wtedy to charakteryzuje stronę główną podręcznika, której pełna nazwa strony jest jednocześnie szukaną pełną nazwą książki. ==== Liczenie rozwiniętej zakodowanej zawartości danego artykułu ==== Gdy to nie jest strona '''spis''', czyli ten artykuł nie jest spisem, tzn. tam się nie mieści żaden spis, to liczymy tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}}: * Przy pomocy rekurencyjnej funkcji liczenia zakodowanej strony, czyli z: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}. * Przeciwnie liczmy te wartości ze zmiennych z końcówką: {{Code|_ref}} {{LinkPatrz|_ref|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. ; Działania w przypadku braku treści strony{{dk}} * Gdy artykuł nie jest korzystany, tzn. według: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}: ** Jeśli strona nie ma zawartości, to funkcja zakańcza się z błędem {{Code|0}}, co jest powiadomieniem, że strona jest niekorzystana, i ona nie ma zawartości. * Przeciwnie, dla strony niemającej zawartości, tzn. gdy {{Code|strona_zbiorcza}} {{LinkPatrz|strona_zbiorcza}}, przyjmuje wartość prawdziwą, wtedy jest liczona zmienna: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, z kluczem {{Code|CzyStronaSubst}}, której jest przydzielana wartość {{Code|tak}}, tzn. czy to jest strona zbiorcza. ** Wtedy funkcja zwraca wartość {{Code|nil}}, co informuje, że strona jest korzystana, i nie ma jej treści. ==== Przypadek innej strony aktualnej niż bieżącej ==== Dla strony korzystanej według zmiennej: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, i dla tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, o kluczu {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}}: * Gdy mamy inną stronę aktualną niż bieżącą, tzn. dla stron zbiorczych, i stron wyświetlanych na innnej stronie niż normalnie. ** Dla tej strony są liczone, dla tablicy podanej, zmienne o kluczach: {{Code|strona_ze_szablonem_strona_start}} {{LinkPatrz|strona_ze_szablonem_strona_start|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, {{Code|formatowanie}} {{LinkPatrz|formatowanie|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} i {{Code|analiza_spis_tresci_korzystane}} {{LinkPatrz|analiza_spis_tresci_korzystane|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, dla stron ze szablonem stronicowym: {{s|StronaStart}} lub jego kolegów, z wbudowanym spisem lub ustawianym, wtedy w zależności od ustawianych parametrów są ustawiane te parametry. ; Szablony spisów{{dk}} * Jednym ze spisów może być użyty szablon: {{s|Spis treści}} (skrót: {{s|TOCright}}) - dla wersji rozwiniętej, {{s|Spis treści zwinięty}} - zwiniętej, i inne szablony, też spisowe: {{s|TOCRamka}} i {{s|TOC limit}}, także: {{s|TOC}} i {{s|TOCRamka}}. ==== Iterowanie po stronie z {{lk|szablony stronicowe|szablonami stronicowymi}} ==== Iterujemy po całem tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, według funkcji: {{LinkŚródtytuł|IterowaniePoElementachTekstu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, którego pierwszym parametrem jest ten zakodowany tekst, według bazy kodów: {{Code|{{m|Szablonowe}}}}. ==== Wystawienie do struktury tablic z danymi informacji o artykule ==== Tworzymy zmienną: {{Code|tablica_danych_nazwy_artykulu}} {{Patrz|tablica_danych_nazwy_artykulu}}, ze zmiennej: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, z kluczem: {{Code|lista_podstron_woluminu}} {{LinkPatrz|lista_podstron_woluminu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, i dalszym kluczem: {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, i powinniliśmy otrzymać tablicę, lub piszemy tablicę pustą. Dla zmiennej: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}} - tablica informacji o artykule, tworzymy podtablicę o kluczu: {{Code|uchwyty_i_numeracje}} {{Patrz|uchwyty_i_numeracje}}, z większej tabeli: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki2}}, zdefiniowaną w głównej tablicy artykułu: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}} - tablica zmiennych artykułu. ==== Kod wikidanych rozważanego artykułu ==== Dla zmiennej: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, liczymy jej wartość o kluczu {{Code|link_wikidane}} {{Patrz|link_wikidane}}, którą jest tablica z kodem, jako jedyny numerowany parametr generowany funkcją: {{Code|{{sr|#p.KodyKlasStronyNaDanejWiki|p=Wiki}}}}, którą jest kod strony linku inteligentnego przyporządkowanej takiej nazwie strony. ==== Nazwa bazowa strony ==== Gdy dana strona jest korzystana, tzn.: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przyjmuje wartość prawdziwą, wtedy możemy policzyć element tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, o kluczu: {{Code|nazwa_bazowa_strony}} {{Patrz|nazwa_bazowa_strony}}, któremu przydzielamy policzoną nazwę ze zmiennej: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wykorzystując do tego funkcję: {{Code|{{sr|#p["PEŁNABAZOWANAZWASTRONY"]|p=Nazwy/Tom II}}}}. ==== Skrót do: '''pozawoluminowych stron''' lub '''niekorzystanych woluminów''', utworzone w celu łatwiejszego odwołania się do innych stron, czy artykułów książek ==== * Zmienna: {{Code|prefiks_numeru_woluminowego_strony}} {{Patrz|prefiks_numeru_woluminowego_strony}}, to jest zmienna skrótów, policzona dla niebieżącej strony dla: '''pozawoluminowych stron''' {{LinkPatrz|pozawoluminowych stron}}, lub '''niekorzystanych woluminów''' {{LinkPatrz|niekorzystanych woluminów}}. Gdy artykuł jest niekorzystany, tzn. zmienna: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przybiera wartość fałszywą, wtedy dla: ; Gdy nie stworzono jeszcze prefiksu w zmiennej{{dk}} {{nobold|{{Code|prefiks_numeru_woluminowego_strony}} {{LinkPatrz|prefiks_numeru_woluminowego_strony}}}}, która jest kluczem dla tabeli{{dk}} {{nobold|{{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}}}{{dk}} Ale przedtem, gdy: {{Code|pozawoluminowe_strony}} {{LinkPatrz|pozawoluminowe_strony}}, jest niepoliczone, dla tej pierwszej pozycji listy, a dla drugiej już nie. * '''pozawoluminowych stron''' {{Patrz|pozawoluminowych stron}} (innej strony niż bieżąca - dla przestrzeni nieksiążkowych), określonych przez zmienną: {{Code|pozawoluminowe_strony}} {{Patrz|pozawoluminowe_strony}} - która wcześniej była policzona, z bazowej nazwy strony według: {{Code|nazwa_bazowa_strony}} {{LinkPatrz|nazwa_bazowa_strony}}, i zmiennej: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wykorzystując do tego funkcję: {{Code|{{sr|#p["SkrótDoNumeruOdnośnika"]|p=StronicowyParser/Pomocne}}}}, liczymy pewien skrót, który umieszczamy w: ** zmiennej: {{Code|prefiks_numeru_woluminowego_strony}} {{LinkPatrz|prefiks_numeru_woluminowego_strony}}, przydzielając mu wartość w postaci tablicy: <syntaxhighlight lang="lua"> tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,}; </syntaxhighlight> * '''niekorzystanych woluminów''' {{Patrz|niekorzystanych woluminów}} (innej książki - woluminu, niż bieżąca - dla przestrzeni książkowych), określonych przez zaprzeczenie zmiennej: {{Code|korzystany_wolumin}} {{Patrz|korzystany_wolumin}} - która wcześniej była policzona, wtedy z nazwy: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, liczymy, korzystając z funkcji: {{Code|{{sr|#p["SkrótDoNumeruOdnośnikaDołączonejKsiążki"]|p=StronicowyParser/Pomocne}}}}, pewien skrót, którego wsadzamy do: ** zmiennej: {{Code|prefiks_numeru_woluminowego_strony}} {{LinkPatrz|prefiks_numeru_woluminowego_strony}}, przydzielając mu wartość w postaci tablicy: <syntaxhighlight lang="lua"> tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,not korzystany_wolumin,czy_artykul_korzystany,}; </syntaxhighlight> ==== Rozważania nad adresem artykułu bieżącego, czy nie ==== Gdy strona jest równa bieżącej według zmiennej: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, wtedy wartość zmiennej: {{Code|strona}} {{LinkPatrz|strona|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, jest o wartości pustej, przeciwnie przyjmuje wartość: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. ==== Szablony tekstu ==== Dla artykułu korzystanego, według: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, uruchamiamy dwie tutaj funkcje, tzn.: * Pierwsza: {{Code|{{sr|#p.UstawPobierzKorzystanie|p=StronicowyParser/SzablonyTekstu}}}}, aktualizująca zmienne, nie informacji, zbierania artykułów w zmiennej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. * Druga: {{Code|{{sr|#p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu|p=StronicowyParser/SzablonyTekstu}}}}, aktualizujące tablice zbierania danych informacji o stronie dotyczące szablonów tekstu: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, nie w zmiennej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, tylko w: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, a także modyfikujące tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, w której zbieramy wiadomości o stronie. ==== Zbieranie informacji o nagłówkach dodatnich o zaznaczonych do takiej analizy ==== * Dla zmiennej dla strony korzystanej według: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, która w tym przypadku przyjmuje wartość prawdziwą, gdy chcemy liczyć jej spis, to musi być ustawiona zmienna z: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, tablicy: {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu: {{Code|analiza_spis_tresci_korzystane}} {{LinkPatrz|analiza_spis_tresci_korzystane|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, przyjmującej ten parametr wartość prawdziwą. * A dla niekorzystanej dla klucza z: {{LinkPatrz|analiza_spis_tresci_doloczone|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wtedy przygotuwujemy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, do dalszej analizy, funkcją: {{Code|{{sr|#p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania|p=Szablonowe}}}}, by potem stworzyć tablicę spisu {{Code|toc}} {{Patrz|toc}}, zwracaną przez naszą opisywaną funkcję, i inne parametry ze strony, przy pomocy funkcji: {{Code|{{sr|#p.SpisRzeczyWedlePodanegoTekstu|p=StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}. ===== Ustawianie wygenerowanego spisu treści analizowanego artykułu ===== Zmienna tablicowa: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, a w niej podtablica o kluczu: {{Code|TOC}} {{Patrz|TOC}}, jest określana wartością tablicy: {{Code|toc}} {{LinkPatrz|toc}}, która została wygenerowana z funkcji generującą spis danego rozważanego artykułu. ==== Sprawdzanie spisu rozważanego artykułu ==== Funkcja przy pomocy parametrów liczy, czy podana strona jest stroną zbiorczą, według funkcji: {{LinkŚródtytuł|StronaSubstFunkcja|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, uruchamiana z pewnymi parametrami. ==== Niedokończone zbierania elementów spisowych o danej stronie niekorzystanej, gdy wcześniej było to niemożliwe ==== Zmienna: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, powinna przyjmować wartość fałszywą, przy innej wartości nie wchodzimy w ten krok instrukcji warunkowej. * A funkcja: {{Code|SpisToc}} {{Patrz|SpisToc}}, powinna zwwrócić zawsze funkcję, którą nazwiemy: {{Code|czy_spis_function}} {{Patrz|czy_spis_function}}, to jej wywołanie raz jest prawdziwe, raz nilowe. Prawdziwe, gdy w tym wywołaniu funkcji głównej dla danego niekorzystanego artykułu udało się zebrać spis, a jeśli nie, to jej wynik jest fałszywy. * Wtedy przy fałszywości tego wyniku ustawiane jest w tablicy o kluczu: {{Code|TOCSPIS_FUNCTION}} {{LinkPatrz|TOCSPIS_FUNCTION|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, tablicy: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, jej wartość, która jest równa: {{Code|czy_spis_function}} {{LinkPatrz|czy_spis_function}}. ** {{Code|czy_spis_function}} {{LinkPatrz|czy_spis_function}} - to jest funkcja, która jest zwrócona przez inną o nazwie: {{Code|SpisToc}} {{LinkPatrz|SpisToc}}. ==== Zbieranie danych w bieżącym artykule dotyczących nazwy przestrzeni nazw, nazw przestrzeni książki, nazwy książki i nazwy artykułu ==== Dla strony korzystanej: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, wtedy ta zmienna przyjmuje wartość {{Code|true}}, dla tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wtedy jej podzmienne o kluczach: * {{Code|link_wikidane}} {{LinkPatrz|link_wikidane}}, jaka jest tablica z kodem linku inteligentnego dla bieżacej strony jako pierwszy element, * {{Code|tablica_aktualnego_artykulu}} {{Patrz|tablica_aktualnego_artykulu}}, którą jest tablica dla aktualnego artykułu, * {{Code|tablica_aktualnej_przestrzeni_nazw}} {{Patrz|tablica_aktualnej_przestrzeni_nazw}}, którą jest tablica dla aktualnej przestrzeni nazw, * {{Code|tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki}} {{Patrz|tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki}}, którą jest tablica dla aktualnej przestrzeni nazw, * {{Code|tablica_aktualnej_ksiazki}} {{Patrz|tablica_aktualnej_ksiazki}}, którą jest tablica dla aktualnej książki. Te tablice, jako dalsze podtablice, dokowane są w głównej tablicy: {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. * One zbierają informacje o książkach (artykułach) w zależności od kluczy, jakie one przyjmują nazwy. ==== Dane zebrane o szablonach tekstu - zbieranie informacji ==== Dla artykułów niekorzystanych, czyli wtedy wartość: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przyjmuje wartość fałszywą, wtedy zmienną: * {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, tworzymy w niej podtablicę o kluczu: {{Code|dane_zebrane_ze_stron}} {{LinkPatrz|dane_zebrane_ze_stron|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wtedy dajemy jej wartość: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. * Dalej dla tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, tworzona jest podtablica pusta, jeśli nie istnieje, o kluczu: {{Code|dane_zebrane_ze_stron_lista}} {{Patrz|dane_zebrane_ze_stron_lista}}, która zbiera wszystkie elementy z analizowanych artykułów, tzn.: ** {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}} - dane dotyczace danego artykułu. Te stworzone tutaj zmienne kasujemy dla: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, prawdziwego. * Też dodatkowo usuwamy zmienną: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, w tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. Te usuwania dokonujemy przy pomocy wartości {{Code|nil}}, która ma takie właściwości. * Też kasujemy w tej zmiennej podtablicę: {{Code|TOCSPIS_FUNCTION}} {{LinkPatrz|TOCSPIS_FUNCTION|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. ==== Zwracane wartości i ich opis ==== Ostatecznie funkcja zwraca po przeanalizowaniu wszystkiego, po zakończeniu zbierania wszystkich danych o danej stronie, według: <syntaxhighlight lang="lua"> return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true; </syntaxhighlight> Parametry zwracane: {{OpisParametrów | 1 = {{Code|self.tabela_listy_danych_analizy_ksiazki}} | _1 = Jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, | 2 = {{Code|tablica_zmiennych}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, | 3 = {{Code|true}} | _3 = wartość zwracana, gdy strona jest analizowana i przeanalizowana pierwszy raz. }} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cj12lr9l4lcvrqq6ggorw4yswggbwlt Szablon:Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1/opis 10 64192 556381 556078 2026-09-14T20:02:07Z Persino 2851 556381 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji: {{m|Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu}}, w dokumentacji modułu: {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1}} == Przykład == {{Pre start}} {{Code|{{s|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1{{=}}5|1{{=}}nazwa2|nazwa3{{=}}6}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1=5|1=nazwa2|nazwa3=6}}}} {{Code|{{s|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1{{=}}5|1{{=}}nazwa2|nazwa3{{=}}6|3{{=}}nazwa4}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}}} {{Code|{{s|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1{{=}}5|2{{=}}nazwa2|nazwa3{{=}}6|4{{=}}nazwa4}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}}} {{Code|{{s|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1{{=}}5|2{{=}}nazwa2|nazwa3{{=}}6}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1=5|2=nazwa2|nazwa3=6}}}} {{Pre koniec}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/Parametry}} </includeonly> 5wc9149xintdrgtag7fsh6p3fm2gqz3 Szablon:StronaStart/styl-strony.css 10 64298 556330 556250 2026-09-14T14:36:19Z Persino 2851 556330 sanitized-css text/css .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul, .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol, .ciało_strona .szablon_plik ~ ul, .ciało_strona .szablon_plik ~ ol{ list-style-position:inside; margin-left:0; margin-inline-start:0; } .ciało_strona div.mw-highlight{ display:flex; flex-direction:column; max-width:100%; overflow-x:auto; overflow-y:hidden; } .ciało_strona div.mw-highlight > pre{ display:block; width:auto !important; min-width:100%; text-align:left; word-wrap:break-word; word-break:break-all; hyphens:none; box-sizing:border-box; white-space:pre-wrap; flex-shrink:0; } .ciało_strona code.zn_ogromne{ hyphens:auto; word-wrap: break-word; word-break: break-all; } .ciało_strona span.link > a{ hyphens:auto; word-wrap: break-word; word-break: break-word; } .ciało_strona span.link.link-ogromne > a{ word-break: break-all; } .ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans, .ciało_strona span.link.link-ogromne > a code{ word-break:unset; } .ciało_strona a code{ color:unset; } .ciało_strona code{ display:inline; font-size:inherit; line-height:1.56; word-wrap:break-word; word-break:break-word; } .ciało_strona p{ margin: 0.4em 0 0.5em 0; font-size: inherit; line-height: 1.3; } .ciało_strona p, .ciało_strona dl{ margin-bottom:0.1em; } .ciało_strona p + p{ margin-top:0.4em; } .ciało_strona p+dl{ margin-top:0.1em; } .ciało_strona p + ol, .ciało_strona p + ul{ margin-top:0.2em; } .ciało_strona table{ margin-bottom:0.5em; } .ciało_strona table + dl{ margin-top:1em; } .ciało_strona dl + div.mw-highlight, .ciało_strona p + div.mw-highlight{ margin-top:0.1em; } .ciało_strona > :not(style):not(link):not(p).floatleft + p, .ciało_strona > :not(style):not(link):not(p).floatright + p, .ciało_strona > :not(style):not(link):not(p).tleft + p, .ciało_strona > :not(style):not(link):not(p).tright + p, .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p, .ciało_strona > figure.mw-halign-left + p, .ciało_strona > figure.mw-halign-right + p{ margin-top:0; } @media print{ .noprint{ display:none; } .print{ display:block; } } .gallerytext, .plainlinks{ text-align:left; } @media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){ figure[typeof~="mw:File"].mw-halign-left{ float:left !important; margin:4px 4px 4px 0 !important; } figure[typeof~="mw:File"].mw-halign-right{ float:right !important; margin:4px 0 4px 4px !important; } figure[typeof~="mw:File"].mw-halign-center{ margin:0 auto !important; } figure[typeof~="mw:File"]{ display:block; max-width:100%; overflow:auto; } span[typeof~="mw:File"].mw-default-size{ display:inline-block; overflow:auto; max-width:100%; } div.tright{ float:right; margin:0 0 1em 1em; } div.tleft{ float:left; margin:0 1em 1em 0; } } @media all and (max-width:745px), all and (max-device-width: 745px){ div.tright, div.tleft{ margin: 0 auto !important; float:none !important; } } /*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/ gc5n9fvw7vmnr212v851txs5kepkspk Kategoria:Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/StronicowyParser 14 64299 556360 2026-09-14T19:15:52Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}}” 556360 wikitext text/x-wiki {{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}} b6lz6rtgdy8574elh6cxs9mf0u1nnnm Kategoria:Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/StronicowyParser/Rozdziały 14 64300 556361 2026-09-14T19:16:46Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/StronicowyParser}}” 556361 wikitext text/x-wiki {{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/StronicowyParser}} 26ph3ta6n3jf4d3rlkkxg702dlrp77a Kategoria:Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/StronicowyParser 14 64301 556362 2026-09-14T19:18:07Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu}}” 556362 wikitext text/x-wiki {{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu}} 37h9jjo3mkpr8t03n0iz5hi6aicw54a Kategoria:Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/StronicowyParser/Rozdziały 14 64302 556363 2026-09-14T19:18:40Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/StronicowyParser}}” 556363 wikitext text/x-wiki {{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/StronicowyParser}} i1f7hqfeqyu2oassm7wkjflbaxbnkpk Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/Kod 1 828 64303 556364 2026-09-14T19:22:19Z Persino 2851 Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); local zrodlolua_modul=require(…” 556364 Scribunto text/plain require("strict"); local p={}; p["Przykład"]=function(frame) local strona="Pomoc:Spis treści"; local title=mw.title.makeTitle('',strona); local tekst=title:getContent(); local id_rozdzialu1="Pomoc Wikibooks"; local id_rozdzialu2="Wstęp"; local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały"); tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"strona",strona,}, {"id_rozdzialu1",id_rozdzialu1,}, {"id_rozdzialu2",id_rozdzialu2,}, {"tekst",tekst,}, }); return wikikod; end; return p kne6afbk79jpbefh12enkcd6swjkbx9 Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/Kod 1/opis 828 64304 556365 2026-09-14T19:23:12Z Persino 2851 Utworzono nową stronę „; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/Kod_1|Przykład}}” 556365 wikitext text/x-wiki ; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/Kod_1|Przykład}} 46u1qktrbu9n2kzo5evltdhfwsd12dp Kategoria:Szablony, zwykłe, przykładów stron projektu/StronicowyParser 14 64305 556366 2026-09-14T19:26:30Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, zwykłe, przykładów stron projektu}}” 556366 wikitext text/x-wiki {{Kategoria|Szablony, zwykłe, przykładów stron projektu}} k0a9633pzcjycwu570hobfyvamwg7w6 Kategoria:Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały 14 64306 556367 2026-09-14T19:27:04Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser}}” 556367 wikitext text/x-wiki {{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser}} pe9f8legkd1iojkz3qn93qm26gil6o7 Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1 10 64307 556368 2026-09-14T19:30:05Z Persino 2851 Utworzono nową stronę „<includeonly>{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|{{{1}}}|{{{2}}}|{{{3}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>” 556368 wikitext text/x-wiki <includeonly>{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|{{{1}}}|{{{2}}}|{{{3}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> g71kk67tz1vjmpcgcd9sfvzlu8herk2 Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1/opis 10 64308 556369 2026-09-14T19:35:47Z Persino 2851 Utworzono nową stronę „{{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1}} == Przykład == ; Przykład{{dk}} * {{s|Wikibooks/Przykład…” 556369 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1}} == Przykład == ; Przykład{{dk}} * {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}} ; Wynik{{dk}} {{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}|język=mediawiki}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}} </includeonly> rpukeo4ts2hgymncm41ogqcnrhetzyb 556377 556369 2026-09-14T19:59:22Z Persino 2851 /* Ilustracja */ 556377 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|StronicowyParser/Rozdziały}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1}} == Przykład == ; Przykład{{dk}} * {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}} ; Wynik{{dk}} {{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}|język=mediawiki}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}} </includeonly> 6qe9pkxhue9996uruggkyya5x3cs53u 556379 556377 2026-09-14T20:00:37Z Persino 2851 /* Ilustracja */ 556379 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji: {{m|StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony}}, w dokumentacji modułu: {{ld2|StronicowyParser/Rozdziały}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1}} == Przykład == ; Przykład{{dk}} * {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}} ; Wynik{{dk}} {{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}|język=mediawiki}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}} </includeonly> nww4ago1iqzbl2ne7ef6a1wwc1xzmhs Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1 10 64309 556370 2026-09-14T19:38:28Z Persino 2851 Utworzono nową stronę „<includeonly>{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|{{{1}}}|{{{2}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>” 556370 wikitext text/x-wiki <includeonly>{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|{{{1}}}|{{{2}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 3ucyq624uj1gui0as83nj9yzymleri3 Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1/opis 10 64310 556371 2026-09-14T19:40:49Z Persino 2851 Utworzono nową stronę „{{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1}} == Przykład == ; Przykład{{dk}} * {{s|Wikib…” 556371 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1}} == Przykład == ; Przykład{{dk}} * {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} ; Wynik{{dk}} {{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}|język=mediawiki}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}} </includeonly> pc8kjc1rhviflnzkpaxw1ysceq4tzqc 556378 556371 2026-09-14T20:00:08Z Persino 2851 556378 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji: {{m|StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}}, w dokumentacji modułu: {{ld2|StronicowyParser/Rozdziały}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1}} == Przykład == ; Przykład{{dk}} * {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} ; Wynik{{dk}} {{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}|język=mediawiki}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}} </includeonly> d20j6ur53i8skudddztl7yx1grjg88m Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1 10 64311 556372 2026-09-14T19:43:19Z Persino 2851 Utworzono nową stronę „<includeonly>{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|{{{1}}}|{{{2}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>” 556372 wikitext text/x-wiki <includeonly>{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|{{{1}}}|{{{2}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> kehhe0ozurkot3782i7nds8vck19bzf Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1/opis 10 64312 556373 2026-09-14T19:45:30Z Persino 2851 Utworzono nową stronę „{{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|NumerSekcjiStrony}} w dokumentacji modułu {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1}} == Przykład == {{Pre start}} {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/W…” 556373 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|NumerSekcjiStrony}} w dokumentacji modułu {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1}} == Przykład == {{Pre start}} {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} → {{Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} {{Pre koniec}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}} </includeonly> a6at8xvxrp76n4r835w4pty7aqx0vkn 556376 556373 2026-09-14T19:58:51Z Persino 2851 556376 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|NumerSekcjiStrony}} w dokumentacji modułu {{ld2|StronicowyParser/Rozdziały}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1}} == Przykład == {{Pre start}} {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} → {{Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} {{Pre koniec}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}} </includeonly> 27kp26b3djtuzbg1zqr7e0y8cvqwdd3 556380 556376 2026-09-14T20:01:07Z Persino 2851 /* Ilustracja */ 556380 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji: {{m|StronicowyParser/Rozdziały|NumerSekcjiStrony}}, w dokumentacji modułu: {{ld2|StronicowyParser/Rozdziały}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1}} == Przykład == {{Pre start}} {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} → {{Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} {{Pre koniec}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}} </includeonly> 54g3zfstv8fkod7rv1fe5afb7ymqx2x MediaWiki:Scribunto-doc-page-przykład 8 64313 556382 2026-09-14T20:37:22Z Persino 2851 Utworzono nową stronę „{{Dokumentacja|zawartość=<!-- -->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{C…” 556382 wikitext text/x-wiki {{Dokumentacja|zawartość=<!-- -->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }}}} ednzrsj0xui4hcwriq5uqxd46y57wuy 556385 556382 2026-09-14T20:40:53Z Persino 2851 Persino przeniósł(-osła) stronę [[MediaWiki:Scribunto-doc-page-przykłady]] do [[MediaWiki:Scribunto-doc-page-przykład]], bez pozostawienia przekierowania pod starym tytułem 556382 wikitext text/x-wiki {{Dokumentacja|zawartość=<!-- -->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }}}} ednzrsj0xui4hcwriq5uqxd46y57wuy 556388 556385 2026-09-14T20:50:59Z Persino 2851 556388 wikitext text/x-wiki {{Dokumentacja|zawartość={{#if:{{ns:{{NAMESPACE}}|<!-- -->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }} qo0nerm5fx835c7uul76laeal6i2sko 556389 556388 2026-09-14T20:51:46Z Persino 2851 556389 wikitext text/x-wiki {{Dokumentacja|zawartość={{#if:{{ns:{{NAMESPACE}}|<!-- -->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }}}} mszg5wlob9nf888g60t52moaypehugf 556390 556389 2026-09-14T20:52:12Z Persino 2851 556390 wikitext text/x-wiki {{Dokumentacja|zawartość={{#if:{{ns:{{NAMESPACE}}}}|<!-- -->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }}}} 2lihy1zvre4zrgl06rfwkdurm0bn5xx 556391 556390 2026-09-14T20:53:50Z Persino 2851 556391 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} |{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }}}} igg9tgw6g7tp08eacjanv6efggxmq9p 556392 556391 2026-09-14T20:59:14Z Persino 2851 556392 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} |{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}}, {{Code|number}}, {{Code|boolean}}, {{Code|table}} i {{Code|nil}}. }}}} dqzzcoadga3dfu5zgh1b4z14ztka3ni 556393 556392 2026-09-14T21:03:15Z Persino 2851 556393 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} |{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowana). }}}} mml0ved0h7rb03u96cq0mjvqzcs864f 556394 556393 2026-09-14T21:09:34Z Persino 2851 556394 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} |{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowana). * Ten opis opisuje kod w: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} fd85wdscnme2ng624nkiyrt97y4wpl0 556395 556394 2026-09-14T21:10:08Z Persino 2851 556395 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} |{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowana). * Ten opis opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} o74a3df621rq58msvvp8kb81em60m0e 556396 556395 2026-09-14T21:11:16Z Persino 2851 556396 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} |{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowana). * Ten opis opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} kt043ao90v0ou6hqhxagh3w0jdrjxu9 556397 556396 2026-09-14T21:13:01Z Persino 2851 556397 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} |{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten opis opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} 5n1x3agnusvrkjijb6zx30phgaj33kn 556398 556397 2026-09-14T21:20:41Z Persino 2851 556398 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} |{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten opis opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} g0kbf7si9sw0cf8r0xzs0ou0ixz5a2u 556399 556398 2026-09-14T21:24:39Z Persino 2851 /* */ 556399 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} |{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} 1pu3reyz7jsr2k4dh7yglig5o67vmqj 556400 556399 2026-09-14T21:28:16Z Persino 2851 /* */ 556400 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} | {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}. | }} }} | #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} szzcajifkg533ity80knghgbb9auqqd 556402 556400 2026-09-14T21:53:48Z Persino 2851 556402 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} | {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{MediaWiki:Scribunto-doc-page-przykład/opis|%/[Kk][Oo][Dd][%s_]*%d+}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{MediaWiki:Scribunto-doc-page-przykład/opis|}} | }} }} | #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} e43uil3h2vza9hr95t0kcdck6zkdvac 556403 556402 2026-09-14T21:55:32Z Persino 2851 556403 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} | {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{MediaWiki:Scribunto-doc-page-przykład/opis|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{MediaWiki:Scribunto-doc-page-przykład/opis|podstrona=}} | }} }} | #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} o85xytz6121nyv7q3yocncu82s1gnwq 556406 556403 2026-09-14T22:09:07Z Persino 2851 556406 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} | {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{MediaWiki:Scribunto-doc-page-przykład/opis|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{MediaWiki:Scribunto-doc-page-przykład/opis|podstrona=}} | }} }} | #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. : Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} rrxke8t4tpk3347lnfu5hjdin0e2jnb 556408 556406 2026-09-14T22:10:16Z Persino 2851 556408 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} | {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=}} | }} }} | #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. : Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. }}}} cupldgvg8l6ew62e0l7e1umyqez7fig 556410 556408 2026-09-14T22:12:00Z Persino 2851 556410 wikitext text/x-wiki {{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}} | {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}} |{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} |{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=}} | }} }} | #default = {{MediaWiki:Scribunto-doc-page-przykład/opis}} }}}} o5p6aivl81h0ruleoz0ci618uz068mv 556422 556410 2026-09-15T00:20:43Z Persino 2851 556422 wikitext text/x-wiki {{Dokumentacja|zawartość= {{#switch:{{Ns:{{NAMESPACE}}}}<!-- -->| {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. <!-- -->{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} <!-- -->|{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}} <!-- -->|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}} <!-- -->|{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=}} <!-- -->| <!-- -->}} <!-- -->}} <!-- -->| #default = {{MediaWiki:Scribunto-doc-page-przykład/opis}} }} }} 2fc7wktjc051035xzpi0m0dvl74ifam MediaWiki:Scribunto-doc-page-przykład/doc 8 64314 556401 2026-09-14T21:51:48Z Persino 2851 Utworzono nową stronę „<includeonly> * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAM…” 556401 wikitext text/x-wiki <includeonly> * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!-- --></includeonly> jety0ixoh2rjo76oiu9q4w0r06mj990 556404 556401 2026-09-14T22:00:30Z Persino 2851 556404 wikitext text/x-wiki <includeonly> * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!-- --></includeonly><!-- --><noinclude> {{Dokumentacja | zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. }}</noinclude> el8jgj5muk7dxzh16wbobft5ktuix47 556405 556404 2026-09-14T22:04:24Z Persino 2851 556405 wikitext text/x-wiki <includeonly> * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!-- --></includeonly><!-- --><noinclude> {{Dokumentacja | zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }}</noinclude> 4tmkbv02oaj5y8du29f7y281gt991rd 556407 556405 2026-09-14T22:10:08Z Persino 2851 Persino przeniósł(-osła) stronę [[MediaWiki:Scribunto-doc-page-przykład/opis]] do [[MediaWiki:Scribunto-doc-page-przykład/doc]], bez pozostawienia przekierowania pod starym tytułem 556405 wikitext text/x-wiki <includeonly> * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!-- --></includeonly><!-- --><noinclude> {{Dokumentacja | zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }}</noinclude> 4tmkbv02oaj5y8du29f7y281gt991rd 556411 556407 2026-09-14T22:17:22Z Persino 2851 556411 wikitext text/x-wiki <includeonly> * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}} {{#ifexist:{{FULLPAGENAME}}/opis|{{DivLinia}}| ; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:{{PAGENAME}}|Przykład}} }}<!-- --></includeonly><!-- --><noinclude> {{Dokumentacja | zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }}</noinclude> oxzjnqa865z9xtc1nreqrqe8kxskgyh 556412 556411 2026-09-14T22:25:03Z Persino 2851 556412 wikitext text/x-wiki <includeonly> {{#ifexist:{{FULLPAGENAME}}/opis|{{DivLinia}}| === Przykład ze zmiennymi i ich wartościami uzyskane z wywołania funkcji przykładu === ; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:{{PAGENAME}}|Przykład}} === Inne === }} * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!-- --></includeonly><!-- --><noinclude> {{Dokumentacja | zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }}</noinclude> h2ks588dv1t1qgwi544o0l024hlw5u8 556414 556412 2026-09-14T22:59:02Z Persino 2851 556414 wikitext text/x-wiki <includeonly> {{Jeśli niepuste komunikat | 1 = {{#ifexist:{{FULLPAGENAME}}/opis||tak}} | wtedy = {{DivLinia}} === Przykład ze zmiennymi i ich wartościami uzyskane z wywołania funkcji przykładu === ; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:{{PAGENAME}}|Przykład}} === Inne === | przeciwnie = {{DivLinia}} }} * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!-- --></includeonly><!-- --><noinclude> {{Dokumentacja | zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }}</noinclude> 78olzt3u4ouyu1uax9us2w9kx96yjzm 556419 556414 2026-09-14T23:28:55Z Persino 2851 556419 wikitext text/x-wiki <includeonly> {{Jeśli niepuste komunikat | 1 = {{#ifexist:{{FULLPAGENAME}}/opis||tak}} | dodatkowe = tak | wtedy = {{DivLinia}} === Przykład ze zmiennymi i ich wartościami uzyskane z wywołania funkcji przykładu === ; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:{{PAGENAME}}|Przykład}} === Inne === | przeciwnie = {{DivLinia}} }} * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!-- --></includeonly><!-- --><noinclude> {{Dokumentacja | zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. }}</noinclude> 2llixbam06s6jq8i2ig43l8iqilwfoq MediaWiki:Scribunto-doc-page-przykład/opis 8 64315 556409 2026-09-14T22:11:31Z Persino 2851 Utworzono nową stronę „To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. : Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{…” 556409 wikitext text/x-wiki To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. : Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. 2czhkvn1byctxuiujvk1v83iyzrg7s0 556413 556409 2026-09-14T22:29:39Z Persino 2851 556413 wikitext text/x-wiki To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}. * To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości. ** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania). * Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu. ** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}. g6q4he47v09uyolju24quazoykl3qmj Wikibooks:Administratorzy/Zobacz też 4 64316 556435 2026-09-15T01:36:19Z Persino 2851 Utworzono nową stronę „* {{lr|Administratorzy}} * {{lr|Administratorzy interfejsu}} * {{lr|Biurokraci}} * {{lr|Stewardzi}}” 556435 wikitext text/x-wiki * {{lr|Administratorzy}} * {{lr|Administratorzy interfejsu}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} pqql3h7j1fwui9zuq3w2t4oj9nou2vx 556438 556435 2026-09-15T01:38:04Z Persino 2851 556438 wikitext text/x-wiki * {{lr|Administratorzy}} * {{lr|Administratorzy interfejsu}} * {{lr|Biurokraci}} * {{lr|Stewardzi}} * {{lmg|Bureaucrat/pl|Biurokrata na Meta}} 6kn5opnoncrw83iuni7yaf40fmrwvtn 556441 556438 2026-09-15T01:43:56Z Persino 2851 556441 wikitext text/x-wiki * {{lr|Administratorzy}} - {{lmg|Administrator/pl|Administratorzy na Meta}} * {{lr|Administratorzy interfejsu}} - {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}} * {{lr|Biurokraci}} - {{lmg|Bureaucrat/pl|Biurokrata na Meta}} * {{lr|Stewardzi}} - {{lmg|Stewards/pl|Stewardzi na Meta}} bxhsbko5l4p06okw7gygf4ynzrxlri5 556442 556441 2026-09-15T01:45:20Z Persino 2851 556442 wikitext text/x-wiki * {{lr|Administratorzy}} {{Pauza}} {{lmg|Administrator/pl|Administratorzy na Meta}} * {{lr|Administratorzy interfejsu}} {{Pauza}} {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}} * {{lr|Biurokraci}} {{Pauza}} {{lmg|Bureaucrat/pl|Biurokrata na Meta}} * {{lr|Stewardzi}} {{Pauza}} {{lmg|Stewards/pl|Stewardzi na Meta}} 1n2er8x5f7t3v8ygnjq7v614cku4zt3 556443 556442 2026-09-15T01:46:32Z Persino 2851 556443 wikitext text/x-wiki * {{lr|Administratorzy}} {{Półpauza}} {{lmg|Administrator/pl|Administratorzy na Meta}} * {{lr|Administratorzy interfejsu}} {{Półpauza}} {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}} * {{lr|Biurokraci}} {{Półpauza}} {{lmg|Bureaucrat/pl|Biurokrata na Meta}} * {{lr|Stewardzi}} {{Półpauza}} {{lmg|Stewards/pl|Stewardzi na Meta}} 2o3a3938qmyu4wsmj30txukwrnryyx3 556444 556443 2026-09-15T01:55:16Z Persino 2851 556444 wikitext text/x-wiki * {{lr|Administratorzy}} {{Półpauza}} {{lmg|Administrator/pl|Administratorzy na Meta}} * {{lr|Administratorzy interfejsu}} {{Półpauza}} {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}} * {{lr|Biurokraci}} {{Półpauza}} {{lmg|Bureaucrat/pl|Biurokrata na Meta}} * {{lr|Stewardzi}} {{Półpauza}} {{lmg|Stewards/pl|Stewardzi na Meta}} {{BrClear}} <noinclude> {{Kategoria|Metastrony Wikibooks}} </noinclude> 2zb0k39vkzbgnx4y9wybtxuvl46a6hv 556445 556444 2026-09-15T01:56:43Z Persino 2851 556445 wikitext text/x-wiki * {{lr|Administratorzy}} {{Półpauza}} {{lmg|Administrator/pl|Administratorzy na Meta}} * {{lr|Administratorzy interfejsu}} {{Półpauza}} {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}} * {{lr|Biurokraci}} {{Półpauza}} {{lmg|Bureaucrat/pl|Biurokrata na Meta}} * {{lr|Stewardzi}} {{Półpauza}} {{lmg|Stewards/pl|Stewardzi na Meta}}<!-- --><noinclude> {{Kategoria|Metastrony Wikibooks}} </noinclude> 4nj8i9u6s3jsfokx8il5k8ujxfldnqu Szablon:PrzypisStrona 10 64317 556481 2026-09-15T04:39:15Z Persino 2851 Utworzono nową stronę „<includeonly><!-- -->{{#invoke:Ramka|Szablon<!-- -->| Nazwa = Cytuj | Funkcja = custom | url = {{{adres}}}/{{{1|{{{podstrona}}}}}} | tytuł = {{{2|{{{nazwa}}}}}} | praca = {{lz | s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}} | n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{se…” 556481 wikitext text/x-wiki <includeonly><!-- -->{{#invoke:Ramka|Szablon<!-- -->| Nazwa = Cytuj | Funkcja = custom | url = {{{adres}}}/{{{1|{{{podstrona}}}}}} | tytuł = {{{2|{{{nazwa}}}}}} | praca = {{lz | s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}} | n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}} }} | data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}} | data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}} | dodatkowe parametry = adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri | bez argumentów szablonu=url;tytuł;praca;Funkcja | zmienna z parametrami rodzica={{#if:{{{potomek|}}}||tak}} | zmienna z argumentami ramki=tak }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> pg5fp5h7mbvbmdmj5fixbsdbbcv11jt 556482 556481 2026-09-15T04:55:19Z Persino 2851 556482 wikitext text/x-wiki <includeonly><!-- -->{{#invoke:Ramka|Szablon<!-- -->| Nazwa = Cytuj | Funkcja = custom | url = {{{adres}}}/{{{1|{{{podstrona}}}}}} | tytuł = {{{2|{{{nazwa}}}}}} | praca = {{lz | s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}} | n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}} }} | data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}} | data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}} | zmienna sprawdzania parametrów = adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri | bez argumentów szablonu=url;tytuł;praca;Funkcja | zmienna z parametrami rodzica={{#if:{{{potomek|}}}||tak}} | zmienna z argumentami ramki=tak }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> n86jjym5apxbob77h1sjiokopbusxbl 556484 556482 2026-09-15T05:13:30Z Persino 2851 556484 wikitext text/x-wiki <includeonly><!-- -->{{#invoke:Ramka|Szablon<!-- -->| Nazwa = Cytuj | Funkcja = custom | url = {{{adres}}}/{{{1|{{{podstrona}}}}}} | tytuł = {{{2|{{{nazwa}}}}}} | praca = {{lz | s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}} | n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}} }} | data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}} | data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}} | zmienna sprawdzania parametrów = adres=uri!;;adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri | bez argumentów szablonu=url;tytuł;praca;Funkcja | zmienna z parametrami rodzica={{#if:{{{potomek|}}}||tak}} | zmienna z argumentami ramki=tak }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> ahmax1kdis2xu2u6ly5fgbnmnkjcaip 556485 556484 2026-09-15T05:14:37Z Persino 2851 556485 wikitext text/x-wiki <includeonly><!-- -->{{#invoke:Ramka|Szablon<!-- -->| Nazwa = Cytuj | Funkcja = custom | url = {{{adres}}}/{{{1|{{{podstrona}}}}}} | tytuł = {{{2|{{{nazwa}}}}}} | praca = {{lz | s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}} | n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}} }} | data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}} | data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}} | zmienna sprawdzania parametrów = adres=uri!;;adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri | bez argumentów szablonu=url;tytuł;praca;Funkcja | zmienna z parametrami rodzica=tak | zmienna z argumentami ramki=tak }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> h6g4ariiajar5oe9lk0mtw73z63y9e9 556531 556485 2026-09-15T08:42:05Z Persino 2851 556531 wikitext text/x-wiki <includeonly><!-- -->{{#invoke:Ramka|Szablon<!-- -->| Nazwa = Cytuj | Funkcja = custom2 | url = {{{adres}}}/{{{1|{{{podstrona}}}}}} | tytuł = {{{2|{{{nazwa}}}}}} | praca = {{lz | s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}} | n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}} }} | data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}} | data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}} | zmienna sprawdzania parametrów = adres=uri!;;adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri | bez argumentów szablonu=url;tytuł;praca;Funkcja | zmienna z parametrami rodzica=tak | zmienna z argumentami ramki=tak }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 268374xef41myv92sccfcicwl9g22b2 556548 556531 2026-09-15T11:26:16Z Persino 2851 556548 wikitext text/x-wiki <includeonly><!-- -->{{#invoke:Ramka|Szablon<!-- -->| Nazwa = Cytuj | Funkcja = custom2 | url = {{{adres}}}/{{{1|{{{podstrona}}}}}} | tytuł = {{{2|{{{nazwa}}}}}} | praca = {{lz | s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}} | n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}} }} | data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}} | data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}} | zmienna sprawdzania parametrów = adres=uri!;;adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri | bez argumentów szablonu=url;tytuł;praca;Funkcja | zmienna z parametrami rodzica=tak | zmienna z argumentami ramki= }}</includeonly><noinclude>{{Dokumentacja}}</noinclude> qjfd6ag0qjx15oq70jyogrxiblsf307