Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.16
first-letter
Media
Specjalna
Dyskusja
Wikipedysta
Dyskusja wikipedysty
Wikibooks
Dyskusja Wikibooks
Plik
Dyskusja pliku
MediaWiki
Dyskusja MediaWiki
Szablon
Dyskusja szablonu
Pomoc
Dyskusja pomocy
Kategoria
Dyskusja kategorii
Wikijunior
Dyskusja Wikijuniora
TimedText
TimedText talk
Moduł
Dyskusja modułu
Wydarzenie
Dyskusja wydarzenia
Wikibooks:Szablony
4
1449
553075
544901
2026-08-24T01:50:54Z
Persino
2851
553075
wikitext
text/x-wiki
<noinclude>{{Skrót|'''[[WB:S]]'''}}__NOTOC__<!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Szablony}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>
Strona ta zawiera spis używanych na Wikibooks '''szablonów''' wraz ze sposobem ich użycia. Szablony to specjalne strony, które mogą być wielokrotnie wstawiane do innych. Wstawienie szablonu odbywa się przez umieszczenie w tekście jego nazwy w podwójnych nawiasach klamrowych: {{Tt|{{s|ek}}}}. Warto zapoznać się również z zasadami tworzenia szablonów na Wikipedii: {{lpr2|Szablony}} i {{lpp2|Tworzenie szablonów}}. Zanim zaczniesz samemu układać szablony, spróbuj modyfikować w swoim podręczniku te już istniejące. Zdobędziesz dzięki temu potrzebne doświadczenie i nauczysz się lepiej wiki-kodu.
{{Spis treści zwinięty|none}}
== Szablony do wstawiania w artykułach (opis wizualny) ==
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów szablonów - tomy wizualne
| spis =
{{SpisTreści|Ogólne|bez przypisów=tak}}
{{SpisTreści|Informacje}}
{{SpisTreści|PrzypisStrona}}
{{SpisTreści|Podręcznikowe}}
{{SpisTreści|Książkowe}}
{{SpisTreści|Tekst|bez przypisów=tak}}
{{SpisTreści|Zawartość}}
{{SpisTreści|Nagłówki}}
{{SpisTreści|Przekierowania}}
{{SpisTreści|Języki}}
{{SpisTreści|Liczby}}
{{SpisTreści|Kategorie}}
{{SpisTreści|Opisy}}
{{SpisTreści|Znaczniki}}
{{SpisTreści|Szablony opływania}}
{{SpisTreści|Stronicowe}}
{{SpisTreści|Kontenerowe}}
{{SpisTreści|Elastyczne}}
{{SpisTreści|Infoboksy/Prolog|3=Infoboksy - Prolog}}
{{SpisTreści|Infoboksy/Tom I|3=Infoboksy - Tom I}}
{{SpisTreści|Infoboksy/Tom II|3=Infoboksy - Tom II|bez przypisów=tak}}
{{SpisTreści|Infoboksy/Tom III|3=Infoboksy - Tom III}}
{{SpisTreści|Infoboksy/Tom IV|3=Infoboksy - Tom IV}}
{{SpisTreści|Infoboksy/Tom V|3=Infoboksy - Tom V}}
{{SpisTreści|Infoboksy/Tom VI|3=Infoboksy - Tom VI}}
{{SpisTreści|Infoboksy/Komponenty|3=Infoboksy - Komponenty|bez przypisów=tak}}
{{SpisTreści|Infoboksy/Komponenty (organizmy żywe)|3=Infoboksy - Komponenty (organizmy żywe)}}
{{SpisTreści|Porządkowe}}
{{SpisTreści|Źródła artykułów}}
{{SpisTreści|Linki}}
{{SpisTreści|Linki inteligentne}}
{{SpisTreści|Do usunięcia}}
{{SpisTreści|Nawigacja}}
{{SpisTreści|Media}}
{{SpisTreści|Grafika}}
{{SpisTreści|Licencjonowanie}}
{{SpisTreści|Techniczne}}
{{SpisTreści|Wikipedysta}}
{{SpisTreści|Dyskusja Wikipedysty}}
{{SpisTreści|MediaWiki}}
{{SpisTreści|Systemowe}}
}}
== Szablony do wstawiania w artykułach (opis tekstowy) ==
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów szablonów - tomy opisowe
| spis =
{{SpisTreści|Szablony/Tom I|{{ns:Help}}:Spis treści|Szablony - Tom I}}
{{SpisTreści|Szablony/Tom II|{{ns:Help}}:Spis treści|Szablony - Tom II}}
{{SpisTreści|Szablony/Tom III|{{ns:Help}}:Spis treści|Szablony - Tom III}}
{{SpisTreści|Szablony/Tom IV|{{ns:Help}}:Spis treści|Szablony - Tom IV}}
}}
== Tworzenie szablonów ==
Szablony tworzyć może każdy - wbrew pozorom nie jest to zbyt trudne. Najlepiej popatrz, jak zbudowane i stosowane są inne szablony i wzoruj się na nich. Pamiętaj o [[Wikibooks:Nazewnictwo artykułów#Szablony|Regułach nazewnictwa dla szablonów]].
== Zobacz też ==
* [[w:Wikipedia:Szablon|Wikipedia:Szablony]]
* [{{fullurl:Specjalna:Allpages|from=&namespace=10}} Automatyczna lista wszystkich szablonów]
* [[meta:Help:Magic words|Magic words]] - różne specjalne kody
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Wizualne opisy techniczne szablonów | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}</noinclude>
le4oclnjgckrfnk4v7z1zb4n4wzx1hi
Szablon:Tabela nawigacyjna
10
32860
553055
452234
2026-08-24T00:44:32Z
Persino
2851
553055
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabela|liczba wierszy=2|liczba kolumn=1
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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|}}}
| atrybuty = {{{opcje|}}}
| styl 1_1 = {{{styl tytułu|}}}
| komórka 1_1 = {{{tytuł}}}
| styl 2_1 = {{{styl spisu|}}}
| komórka 2_1 = {{{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>
rc0dyktkk73hxsmlxup62bj5ymevjmy
553056
553055
2026-08-24T00:58:26Z
Persino
2851
553056
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabela|liczba wierszy=2|liczba kolumn=1
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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|}}}
| atrybuty = {{{opcje|}}}
| styl 1 = {{{styl tytułu|}}}
| nagłówek 1 = {{{tytuł}}}
| styl 2 = {{{styl spisu|}}}
| nagłówek 2 = {{{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>
c1snp9erinjolmp8ocqwbfxwwqu9spv
553057
553056
2026-08-24T00:58:45Z
Persino
2851
553057
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabela|liczba wierszy=1|liczba kolumn=1
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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|}}}
| atrybuty = {{{opcje|}}}
| styl 1 = {{{styl tytułu|}}}
| nagłówek 1 = {{{tytuł}}}
| styl 2 = {{{styl spisu|}}}
| nagłówek 2 = {{{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>
im3v9ofe6pfeodvxeiyh0e9xo6cdlyn
553058
553057
2026-08-24T00:59:40Z
Persino
2851
553058
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabela|liczba wierszy=1|liczba kolumn=1
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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|}}}
| atrybuty = {{{opcje|}}}
| styl 1 = {{{styl tytułu|}}}
| nagłówek 1 = {{{tytuł}}}
| styl 1_1 = {{{styl spisu|}}}
| komórka 1_1 = {{{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>
p3xlvh0t86vmfs3fyv7effsmshxmcmi
553060
553058
2026-08-24T01:07:27Z
Persino
2851
553060
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabela|liczba wierszy=1|liczba kolumn=1|pozycja=brak
| styl op= = display:flex;flex-direction:column;width:auto;
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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|}}}
| atrybuty = {{{opcje|}}}
| styl 1 = {{{styl tytułu|}}}
| nagłówek 1 = {{{tytuł}}}
| styl 1_1 = {{{styl spisu|}}}
| komórka 1_1 = {{{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>
8594vdi1ebekjyz8jkpwt0ka867kwlj
553061
553060
2026-08-24T01:08:08Z
Persino
2851
553061
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabela|liczba wierszy=1|liczba kolumn=1|pozycja=brak
| styl op = display:flex;flex-direction:column;width:auto;
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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|}}}
| atrybuty = {{{opcje|}}}
| styl 1 = {{{styl tytułu|}}}
| nagłówek 1 = {{{tytuł}}}
| styl 1_1 = {{{styl spisu|}}}
| komórka 1_1 = {{{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>
o0scqj8bk6ncfa275ijgv0jyezj1sks
553062
553061
2026-08-24T01:10:12Z
Persino
2851
553062
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabela|liczba wierszy=1|liczba kolumn=1|pozycja=brak
| styl op = display:flex;flex-direction:column;width:auto;max-width:fit-content;max-height:fit-content;
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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|}}}
| atrybuty = {{{opcje|}}}
| styl 1 = {{{styl tytułu|}}}
| nagłówek 1 = {{{tytuł}}}
| styl 1_1 = {{{styl spisu|}}}
| komórka 1_1 = {{{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>
ne0k8g038x9w6cuwuf3xb0mbuq1xl0w
553063
553062
2026-08-24T01:11:22Z
Persino
2851
553063
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabela|liczba wierszy=1|liczba kolumn=1|pozycja=brak
| styl op = display:flex;flex-direction:column;width:fit-content;height:fit-content;
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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|}}}
| atrybuty = {{{opcje|}}}
| styl 1 = {{{styl tytułu|}}}
| nagłówek 1 = {{{tytuł}}}
| styl 1_1 = {{{styl spisu|}}}
| komórka 1_1 = {{{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>
550hbd5o12syu23gadxczm8my9un3ej
553064
553063
2026-08-24T01:11:57Z
Persino
2851
553064
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabelka
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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 = {{{opcje|}}}
| 1 = {{Wiersz|{{Komórka|nagłówek=tak|styl={{{styl tytułu|}}}|{{{tytuł}}}}}}}{{Wiersz|{{Komórka|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 tytułu =
| styl spisu =
| klasa =
| opcje =
| tytuł = txt!
| spis = txt!
}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
m73ufzr1nwui0ipilnuoy9sgcmyuqua
553065
553064
2026-08-24T01:14:32Z
Persino
2851
553065
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />{{Tabela|liczba wierszy=1|liczba kolumn=1
| id = {{{id|}}}
| styl = {{{styl|}}}
| klasa = 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|}}}
| atrybuty = {{{opcje|}}}
| styl 1 = {{{styl tytułu|}}}
| nagłówek 1 = {{{tytuł}}}
| styl 1_1 = {{{styl spisu|}}}
| komórka 1_1 = {{{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>
p3xlvh0t86vmfs3fyv7effsmshxmcmi
Szablon:Tabela nawigacyjna/styles.css
10
59605
553066
539150
2026-08-24T01:20:50Z
Persino
2851
553066
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.szerokość{
display:flex;
flex-direction:row;
width:auto;
}
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}}*/
99a1p3syu8733nwro88i0b4wv0ghk5t
553076
553066
2026-08-24T01:52:52Z
Persino
2851
553076
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.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
}
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}}*/
9mo4qf870uixzhrp3vb3hx03nifrglr
Moduł:StronicowyParser/AnalizaSpisuRzeczy
828
60192
552908
552904
2026-08-23T11:59:12Z
Persino
2851
552908
Scribunto
text/plain
local p={};
function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do or 1;
local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil;
while(true)do
local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))then
return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
end;
a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
if(not jak)then
if(a1==b1)then
liczba_start=b1+1;
else
liczba_start=b1;
end;
else
liczba_start=b1+1;
end;
end;
end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;
local dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
if(numer_rodzaju_artykulu==1)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
local function StronyWstepu(artykul)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=true;
for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
tak=tak and (not mw.ustring.match(artykul,wzor));
if(not tak)then return tak;end;
end;
return tak;
end;
if((czy_glowny_spis_tresci)and(artykul==""))then
return false,numer_rodzaju_artykulu,czy_podrecznik,false;
else
if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
return true,numer_rodzaju_artykulu,czy_podrecznik,false;
else
return true,numer_rodzaju_artykulu,czy_podrecznik,true;
end;
end;
else
return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
end;
end;
end;
return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(obiekt=="SZABLON")then
local szablonowe_modul=require("Module:Szablonowe");
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(nazwa_szablonu=="SpisTreści")then
return true,1;
else
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
local parametr_linku;
if(tabela_spisu[1]==true)then
local numer_link=tabela_spisu["numer_link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
else
local numer_link=tabela_spisu["link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
end;
if(parametr_linku)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
end;
end;
end;
end;
end);
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
end;
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
--czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
return true;
elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
tak=true;
break;
elseif(czy_okladka)then
tak=true;
break;
end;
end;
end;
return (not tak);
end;
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=false;
local techniczne_modul=require("Module:Techniczne");
linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
if(tak)then return true;end;
end;
return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local techniczne_modul=require("Module:Techniczne");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true);
if(czy_zerowy_spis_rzeczy)then
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
else
liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial;
end;
else
return;
end;
end;
return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return;end;
return true;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa)and(zawartosc))then
if(nazwa=="center")then
return true;
end;
end;
end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod,poziom_iteracji=iterator();
local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(not wynik)then
local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
end;
end;
end;
if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
else
return;
end;
end;
return nil;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona;
if(czy_rozdzial_rownaniowy_dodatni)then
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu)
else
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
end;
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(liczba_szablon_centrowany)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
if(naglowek)then
if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(naglowek,nil);
end;
end;
else
local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu];
if(naglowek)then
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if((naglowek)and(poziom_naglowka))then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end;
return true;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="center")then
if(zawartosc)then
if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(zawartosc,nil);
end;
end;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
if(zawartosc)then
local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
if(numer_rozdzialu)then
return __FUNKCJA(zawartosc,numer_rozdzialu);
end;
end;
end;
return true;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
wzor_rozdzialu_dodatniego,
true,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
return true;
end);
if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
local _max_min;
if(czy_od_tylu)then
_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
else
_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
end;
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
end;
end;
return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local linki=function(zawartosc)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
elseif(obiekt=="SZABLON")then
local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
end);
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
if(obiekt=="SZABLON")then
local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
local zawartosc;
if(not czy_numer_parametru_naglowka)then
czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(not czy_numer_parametru_naglowka)then return nil;end;
local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc_szablonu)then return nil;end;
zawartosc_szablonu=mw.text.trim(zawartosc_szablonu);
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu);
if((not naglowek)or(not poziom_naglowka))then return nil;end;
zawartosc=naglowek;
else
zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc)then return nil;end;
end;
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end);
return szablon,obiekt,kod;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
return nil;
end;
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
or(mw.ustring.match(str,"^[%s%p%w]*$")))
)then return nil;end;
local ile_punktowanych=0;
local szablonowe_modul=require("Module:Szablonowe");
local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
ile_punktowanych=ile_punktowanych+1;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
ile_punktowanych=ile_punktowanych+1;
break;
end;
end;
end;
end);
if(ile_punktowanych>=ile)then
return nil;
end;
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
if(czy_zeruj)then
tab_zmienne.liczba_nie_okladka_artykul=nil;
tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
tab_zmienne.czy_ten_rozdzial=nil;
--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
end;
return true;
end;
end;
return nil;
end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
local odtylu=liczba_obiekt_start_spac_par;
local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
local czy_fun=false;
local czy_pierwszy=nil;
local liczba_koniec_naglowek_poczt=nil;
local szablonowe_modul=require("Module:Szablonowe");
while(true)do
local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
if(czy_dodatni==1)then
local _;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
elseif(czy_dodatni==2)then
local str_lista_naglowek;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil;
else
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil;
end;
if(not liczba_start_naglowek_nowe)then
break;
else
poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_tak_spisowe)then
if(not czy_pierwszy)then
liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
czy_pierwszy=true;
end;
if(liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"));
if(czy_pomiedzy_naglowkami
and(((czy_dodatni==1)
and(
((poziom_naglowka_nowe)and(not poziom_naglowka))
or(
((poziom_naglowka_nowe)and(poziom_naglowka))
and(poziom_naglowka_nowe>=poziom_naglowka)
)
)
or(
((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka))
or((czy_dodatni~=1)and(czy_dodatni~=2))
)
)--[[or(
not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu())
)]])
)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
if(not spis_tresci)then
--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
if(czy_wynik)then return false;end;
end;
czy_fun=true;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
end;
end;
odtylu=liczba_start_naglowek_nowe;
end;
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
----
if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
----
local str_spacja_lub_zerowy_naglowek=function(tekst)
local ile_znalezione_linie_wedlug_wzoru=0;
local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
end;
return nil;
end);
if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
return nil;
end;
if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(not liczba_start_rozdzial)then
while(true)do
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
if(not liczba_start_naglowek_temp)then break;end;
end;
end;
elseif(not liczba_start_naglowek)then
local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_naglowek_temp)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
----
local tak=false;
local czy_w_petli=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
if(numer_rodzaju_artykulu==1)then
tak=true;
break;
end;
end;
end;
end;
if((tak)or(not czy_w_petli))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0;
end;
end;
else
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
end;
end;
end;
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
local liczba_spac=0;
if(liczba_start)then
local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
while(true)do
local liczba_start_tekst_stare=liczba_start_tekst;
linia=nil
local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
if(rozdzial_dodatki)then
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
end;
end;
local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
if(spacja)then
liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1;
elseif((not spacja)and(linia))then
local czy_spis=nil;
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local czy_rozdzial_dwukropkowy;
if(not spis_tresci)then
liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_rozdzial)then
liczba_start=liczba_start_rozdzial;
else
czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$");
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
czy_spis=liczba_start_rozdzial and true or nil;
else
liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
czy_spis=true;
end;
if(not liczba_start_rozdzial)then
if(not spis_tresci)then
local szablonowe_modul=require("Module:Szablonowe");
if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
local tak=false;
local czy_okladka=nil;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
tak=true;
break;
end;
end;
end;
liczba_start=tak and liczba_start_tekst or liczba_start;
else
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
else
liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
end;
end;
return liczba_start,liczba_spac,czy_spis;
elseif(not liczba_start_tekst)then
return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
end;
end;
end;
return liczba_start,liczba_spac,nil;
end;
function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)
local liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
return liczba_start,true;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
return liczba_start,true;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then
liczba_start=liczba_start_nowa;
end;
else
liczba_start=liczba_start_sugerowane;
end;
end;
else
liczba_start=liczba_start_sugerowane;
end;
return liczba_start,false;
end;
function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki)
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
----
----
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
else
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
for szablon,obiekt,kod in iterator do
local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_znajdz)then
local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_tekst)then
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
end;
end;
else
return false;
end;
szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
end;
end;
return false;
end;
end;
function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
---
if((liczba_linki_nierozdzialowe_szablonu)
and(
(przed_tekst=="")
or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
)
)then
liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
----
local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false);
if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end;
return liczba_spisowa,false;
end;
else
return liczba_spisowa,false;
end;
end;
end;
function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
while(true)do
local poczatek_nierozdzalowe=liczba_obiekt_koniec;
local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
if(liczba_start_nieszablon_nielink_nierozdzialowa)then
local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
if(rozdzial_dodatki)then
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
end;
end;
local czy_spacje=mw.ustring.match(linia,"^%s*$");
if(not czy_spacje)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
elseif(czy_spacje)then
liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
end;
else
liczba_koniec=#tekst_rozwiniety_calego_artykulu;
return liczba_koniec;
end;
end;
return liczba_koniec;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local obiekt="SZABLON";
local kod=kod_szablon and tonumber(kod_szablon) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
----
local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
end);
if(liczba_koniec_szablon)then
return liczba_koniec_szablon,norma_wzoru;
end;
elseif(not liczba_start_szablon)then
return nil;
end;
end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=nil;
local techniczne_modul=require("Module:Techniczne");
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
return true;
end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not liczba_rozdzial_start)then
liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)then tak=true;end;
end;
if(liczba_rozdzial_start)then
local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
if(not tak)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
end;
elseif(liczba_rozdzial_start3)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
elseif(liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
end;
end;
-----
local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
if((obiekt)and(kod)and(dalszy_tekst))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
return linia;
end;
end;
linia=dalszy_tekst or linia;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if(czy_element_spisu)then
return linia;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
return linia;
else
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return "";
end);
return wynik;
end;
end;
end;
return "";
end);
tekst=tekst1..str_bibliografia..tekst2;
end;
return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
----
local liczba_start=nil;local liczba_koniec=nil;
----
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
-----
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
----
local liczba_obiekt_koniec=1;
local liczba_pierwszy_rozdzialowy_artykul=nil;
local liczba_nie_okladka_artykul=nil;
local tab_nazwa_spisow_przekierowaniowych={};
local liczba_start_rozdzial=1;
local liczba_obiekt_start_poprz=nil;
local liczba_obiekt_koniec_poprz=nil;
local liczba_nie_okladka_artykul_koniec=nil;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
if(liczba_start_szablon)then
liczba_obiekt_koniec=liczba_koniec_szablon;
--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local czy_rozdzial_dodatni;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=((czy_dobry_obiekt)and(
(
(lista_szablon~="")and(
(przerwa_szablon=="")
or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))
or(not mw.ustring.match(lista_szablon,"^:"))
)
)
or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))
));
czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_element_spisu)or(czy_okladka))then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
local tak=false;
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu_temp)and(not czy_okladka_temp))then
if(numer_rodzaju_artykulu_temp==1)then
tak=true;
break;
end;
end;
end;
end;
if(tak)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
end;
end;
liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
----
if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
local czy_bez_naglowka=nil;
local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil;
local czy_ten_rozdzial=true;
local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
local tab_zmienne={
liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
czy_ten_rozdzial=czy_ten_rozdzial,
};
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
if(not czy_ten_rozdzial)then
if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
liczba_obiekt_start_nowe=liczba_obiekt_start;
czy_ten_rozdzial=true;
tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
end;
end;
---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy;
liczba_start_naglowek=(
(not liczba_spis_tresci_start)
or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany;
-- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni;
or((poziom_naglowka_start)and(poziom_naglowka))and(
((poziom_naglowka_start>0)and(poziom_naglowka<=0))
or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka))
or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka))
)
) and liczba_spis_tresci_start
or liczba_start_naglowek;
----
if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
----
czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
----
if(liczba_start_naglowek)then
local liczba_przed_rozdzialem;local czy_znajdz;
liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz);
if(czy_break)then break;end;
else
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
return true;
end;
end;
return nil;
end);
if(liczba_start_naglowek)then
liczba_obiekt_start_nowe=liczba_start_naglowek;
end;
--[[]]
local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz);
if(czy_break)then break;end;
end;
break;
else
liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
liczba_nie_okladka_artykul_koniec=nil;
end;
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
else
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
end;
end;
else
break;
end;
end;
if(not liczba_start)then return "";end;
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true);
----
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_koniec=liczba_koniec_szablon;
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_znalezione=nil;
if(liczba_start<=liczba_obiekt_start)then
czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
end;
if(czy_znalezione)then
liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec);
break;
end;
end;
else
break;
end;
end;
if(liczba_koniec)then
local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
local czy_znalazles_linki=p.SzukajWeNapisieObiektuArtykularnego(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end;
else
break;
end;
end;
end;
if(not liczba_koniec)then return "";end;
if(liczba_start>=liczba_koniec)then return "";end;
--- Licencja ----
local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
liczba_koniec=licencja_koniec;
end;
-----
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
-----
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
--mw.log(tekst)
--- Licencja ----
--mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
--mw.log("TYTAN1",tekst,"TYTAN2")
--return nil;
--local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
cap98e0t5eourl1xsazdtmagd7ybzes
552914
552908
2026-08-23T12:24:45Z
Persino
2851
552914
Scribunto
text/plain
local p={};
function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do or 1;
local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil;
while(true)do
local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))then
return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
end;
a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
if(not jak)then
if(a1==b1)then
liczba_start=b1+1;
else
liczba_start=b1;
end;
else
liczba_start=b1+1;
end;
end;
end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;
local dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
if(numer_rodzaju_artykulu==1)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
local function StronyWstepu(artykul)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=true;
for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
tak=tak and (not mw.ustring.match(artykul,wzor));
if(not tak)then return tak;end;
end;
return tak;
end;
if((czy_glowny_spis_tresci)and(artykul==""))then
return false,numer_rodzaju_artykulu,czy_podrecznik,false;
else
if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
return true,numer_rodzaju_artykulu,czy_podrecznik,false;
else
return true,numer_rodzaju_artykulu,czy_podrecznik,true;
end;
end;
else
return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
end;
end;
end;
return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(obiekt=="SZABLON")then
local szablonowe_modul=require("Module:Szablonowe");
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(nazwa_szablonu=="SpisTreści")then
return true,1;
else
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
local parametr_linku;
if(tabela_spisu[1]==true)then
local numer_link=tabela_spisu["numer_link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
else
local numer_link=tabela_spisu["link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
end;
if(parametr_linku)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
end;
end;
end;
end;
end);
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
end;
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
--czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
return true;
elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
tak=true;
break;
elseif(czy_okladka)then
tak=true;
break;
end;
end;
end;
return (not tak);
end;
function p.SzukajWeNapisieObiektuArtykularnego(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local start=1;
while(true)do
local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start);
local koniec_obiekt;local kod_obiekt;local obiekt=nil;
if(start_szablon)then
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local kod=kod_szablon;
local obiekt=obiekt_szablon;
local kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
if(czy_element)then
return true;
end;
end;
start=koniec_szablon;
else
return false;
end;
end;
end;
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=false;
local techniczne_modul=require("Module:Techniczne");
linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
if(tak)then return true;end;
end;
return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local techniczne_modul=require("Module:Techniczne");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true);
if(czy_zerowy_spis_rzeczy)then
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
else
liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial;
end;
else
return;
end;
end;
return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return;end;
return true;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa)and(zawartosc))then
if(nazwa=="center")then
return true;
end;
end;
end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod,poziom_iteracji=iterator();
local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(not wynik)then
local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
end;
end;
end;
if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
else
return;
end;
end;
return nil;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona;
if(czy_rozdzial_rownaniowy_dodatni)then
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu)
else
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
end;
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(liczba_szablon_centrowany)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
if(naglowek)then
if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(naglowek,nil);
end;
end;
else
local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu];
if(naglowek)then
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if((naglowek)and(poziom_naglowka))then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end;
return true;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="center")then
if(zawartosc)then
if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(zawartosc,nil);
end;
end;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
if(zawartosc)then
local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
if(numer_rozdzialu)then
return __FUNKCJA(zawartosc,numer_rozdzialu);
end;
end;
end;
return true;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
wzor_rozdzialu_dodatniego,
true,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
return true;
end);
if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
local _max_min;
if(czy_od_tylu)then
_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
else
_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
end;
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
end;
end;
return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local linki=function(zawartosc)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
elseif(obiekt=="SZABLON")then
local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
end);
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
if(obiekt=="SZABLON")then
local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
local zawartosc;
if(not czy_numer_parametru_naglowka)then
czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(not czy_numer_parametru_naglowka)then return nil;end;
local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc_szablonu)then return nil;end;
zawartosc_szablonu=mw.text.trim(zawartosc_szablonu);
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu);
if((not naglowek)or(not poziom_naglowka))then return nil;end;
zawartosc=naglowek;
else
zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc)then return nil;end;
end;
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end);
return szablon,obiekt,kod;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
return nil;
end;
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
or(mw.ustring.match(str,"^[%s%p%w]*$")))
)then return nil;end;
local ile_punktowanych=0;
local szablonowe_modul=require("Module:Szablonowe");
local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
ile_punktowanych=ile_punktowanych+1;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
ile_punktowanych=ile_punktowanych+1;
break;
end;
end;
end;
end);
if(ile_punktowanych>=ile)then
return nil;
end;
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
if(czy_zeruj)then
tab_zmienne.liczba_nie_okladka_artykul=nil;
tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
tab_zmienne.czy_ten_rozdzial=nil;
--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
end;
return true;
end;
end;
return nil;
end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
local odtylu=liczba_obiekt_start_spac_par;
local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
local czy_fun=false;
local czy_pierwszy=nil;
local liczba_koniec_naglowek_poczt=nil;
local szablonowe_modul=require("Module:Szablonowe");
while(true)do
local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
if(czy_dodatni==1)then
local _;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
elseif(czy_dodatni==2)then
local str_lista_naglowek;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil;
else
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil;
end;
if(not liczba_start_naglowek_nowe)then
break;
else
poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_tak_spisowe)then
if(not czy_pierwszy)then
liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
czy_pierwszy=true;
end;
if(liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"));
if(czy_pomiedzy_naglowkami
and(((czy_dodatni==1)
and(
((poziom_naglowka_nowe)and(not poziom_naglowka))
or(
((poziom_naglowka_nowe)and(poziom_naglowka))
and(poziom_naglowka_nowe>=poziom_naglowka)
)
)
or(
((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka))
or((czy_dodatni~=1)and(czy_dodatni~=2))
)
)--[[or(
not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu())
)]])
)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
if(not spis_tresci)then
--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
if(czy_wynik)then return false;end;
end;
czy_fun=true;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
end;
end;
odtylu=liczba_start_naglowek_nowe;
end;
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
----
if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
----
local str_spacja_lub_zerowy_naglowek=function(tekst)
local ile_znalezione_linie_wedlug_wzoru=0;
local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
end;
return nil;
end);
if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
return nil;
end;
if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(not liczba_start_rozdzial)then
while(true)do
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
if(not liczba_start_naglowek_temp)then break;end;
end;
end;
elseif(not liczba_start_naglowek)then
local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_naglowek_temp)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
----
local tak=false;
local czy_w_petli=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
if(numer_rodzaju_artykulu==1)then
tak=true;
break;
end;
end;
end;
end;
if((tak)or(not czy_w_petli))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0;
end;
end;
else
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
end;
end;
end;
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
local liczba_spac=0;
if(liczba_start)then
local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
while(true)do
local liczba_start_tekst_stare=liczba_start_tekst;
linia=nil
local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
if(rozdzial_dodatki)then
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
end;
end;
local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
if(spacja)then
liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1;
elseif((not spacja)and(linia))then
local czy_spis=nil;
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local czy_rozdzial_dwukropkowy;
if(not spis_tresci)then
liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_rozdzial)then
liczba_start=liczba_start_rozdzial;
else
czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$");
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
czy_spis=liczba_start_rozdzial and true or nil;
else
liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
czy_spis=true;
end;
if(not liczba_start_rozdzial)then
if(not spis_tresci)then
local szablonowe_modul=require("Module:Szablonowe");
if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
local tak=false;
local czy_okladka=nil;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
tak=true;
break;
end;
end;
end;
liczba_start=tak and liczba_start_tekst or liczba_start;
else
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
else
liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
end;
end;
return liczba_start,liczba_spac,czy_spis;
elseif(not liczba_start_tekst)then
return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
end;
end;
end;
return liczba_start,liczba_spac,nil;
end;
function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)
local liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
return liczba_start,true;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
return liczba_start,true;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then
liczba_start=liczba_start_nowa;
end;
else
liczba_start=liczba_start_sugerowane;
end;
end;
else
liczba_start=liczba_start_sugerowane;
end;
return liczba_start,false;
end;
function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki)
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
----
----
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
else
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
for szablon,obiekt,kod in iterator do
local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_znajdz)then
local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_tekst)then
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
end;
end;
else
return false;
end;
szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
end;
end;
return false;
end;
end;
function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
---
if((liczba_linki_nierozdzialowe_szablonu)
and(
(przed_tekst=="")
or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
)
)then
liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
----
local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false);
if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end;
return liczba_spisowa,false;
end;
else
return liczba_spisowa,false;
end;
end;
end;
function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
while(true)do
local poczatek_nierozdzalowe=liczba_obiekt_koniec;
local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
if(liczba_start_nieszablon_nielink_nierozdzialowa)then
local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
if(rozdzial_dodatki)then
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
end;
end;
local czy_spacje=mw.ustring.match(linia,"^%s*$");
if(not czy_spacje)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
elseif(czy_spacje)then
liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
end;
else
liczba_koniec=#tekst_rozwiniety_calego_artykulu;
return liczba_koniec;
end;
end;
return liczba_koniec;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local obiekt="SZABLON";
local kod=kod_szablon and tonumber(kod_szablon) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
----
local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
end);
if(liczba_koniec_szablon)then
return liczba_koniec_szablon,norma_wzoru;
end;
elseif(not liczba_start_szablon)then
return nil;
end;
end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=nil;
local techniczne_modul=require("Module:Techniczne");
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
return true;
end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not liczba_rozdzial_start)then
liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)then tak=true;end;
end;
if(liczba_rozdzial_start)then
local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
if(not tak)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
end;
elseif(liczba_rozdzial_start3)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
elseif(liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
end;
end;
-----
local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
if((obiekt)and(kod)and(dalszy_tekst))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
return linia;
end;
end;
linia=dalszy_tekst or linia;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if(czy_element_spisu)then
return linia;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
return linia;
else
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return "";
end);
return wynik;
end;
end;
end;
return "";
end);
tekst=tekst1..str_bibliografia..tekst2;
end;
return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
----
local liczba_start=nil;local liczba_koniec=nil;
----
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
-----
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
----
local liczba_obiekt_koniec=1;
local liczba_pierwszy_rozdzialowy_artykul=nil;
local liczba_nie_okladka_artykul=nil;
local tab_nazwa_spisow_przekierowaniowych={};
local liczba_start_rozdzial=1;
local liczba_obiekt_start_poprz=nil;
local liczba_obiekt_koniec_poprz=nil;
local liczba_nie_okladka_artykul_koniec=nil;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
if(liczba_start_szablon)then
liczba_obiekt_koniec=liczba_koniec_szablon;
--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local czy_rozdzial_dodatni;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=((czy_dobry_obiekt)and(
(
(lista_szablon~="")and(
(przerwa_szablon=="")
or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))
or(not mw.ustring.match(lista_szablon,"^:"))
)
)
or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))
));
czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_element_spisu)or(czy_okladka))then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
local tak=false;
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu_temp)and(not czy_okladka_temp))then
if(numer_rodzaju_artykulu_temp==1)then
tak=true;
break;
end;
end;
end;
end;
if(tak)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
end;
end;
liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
----
if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
local czy_bez_naglowka=nil;
local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil;
local czy_ten_rozdzial=true;
local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
local tab_zmienne={
liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
czy_ten_rozdzial=czy_ten_rozdzial,
};
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
if(not czy_ten_rozdzial)then
if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
liczba_obiekt_start_nowe=liczba_obiekt_start;
czy_ten_rozdzial=true;
tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
end;
end;
---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy;
liczba_start_naglowek=(
(not liczba_spis_tresci_start)
or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany;
-- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni;
or((poziom_naglowka_start)and(poziom_naglowka))and(
((poziom_naglowka_start>0)and(poziom_naglowka<=0))
or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka))
or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka))
)
) and liczba_spis_tresci_start
or liczba_start_naglowek;
----
if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
----
czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
----
if(liczba_start_naglowek)then
local liczba_przed_rozdzialem;local czy_znajdz;
liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz);
if(czy_break)then break;end;
else
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
return true;
end;
end;
return nil;
end);
if(liczba_start_naglowek)then
liczba_obiekt_start_nowe=liczba_start_naglowek;
end;
--[[]]
local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz);
if(czy_break)then break;end;
end;
break;
else
liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
liczba_nie_okladka_artykul_koniec=nil;
end;
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
else
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
end;
end;
else
break;
end;
end;
if(not liczba_start)then return "";end;
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true);
----
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_koniec=liczba_koniec_szablon;
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_znalezione=nil;
if(liczba_start<=liczba_obiekt_start)then
czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
end;
if(czy_znalezione)then
liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec);
break;
end;
end;
else
break;
end;
end;
if(liczba_koniec)then
local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
local czy_znalazles_linki=p.SzukajWeNapisieObiektuArtykularnego(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end;
else
break;
end;
end;
end;
if(not liczba_koniec)then return "";end;
if(liczba_start>=liczba_koniec)then return "";end;
--- Licencja ----
local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
liczba_koniec=licencja_koniec;
end;
-----
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
-----
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
--mw.log(tekst)
--- Licencja ----
--mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
--mw.log("TYTAN1",tekst,"TYTAN2")
--return nil;
--local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
d2i0vc8d6mddv71z67f57ii8cdo34rz
552915
552914
2026-08-23T12:32:29Z
Persino
2851
552915
Scribunto
text/plain
local p={};
function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do or 1;
local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil;
while(true)do
local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))then
return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
end;
a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
if(not jak)then
if(a1==b1)then
liczba_start=b1+1;
else
liczba_start=b1;
end;
else
liczba_start=b1+1;
end;
end;
end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;
local dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
if(numer_rodzaju_artykulu==1)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
local function StronyWstepu(artykul)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=true;
for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
tak=tak and (not mw.ustring.match(artykul,wzor));
if(not tak)then return tak;end;
end;
return tak;
end;
if((czy_glowny_spis_tresci)and(artykul==""))then
return false,numer_rodzaju_artykulu,czy_podrecznik,false;
else
if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
return true,numer_rodzaju_artykulu,czy_podrecznik,false;
else
return true,numer_rodzaju_artykulu,czy_podrecznik,true;
end;
end;
else
return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
end;
end;
end;
return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(obiekt=="SZABLON")then
local szablonowe_modul=require("Module:Szablonowe");
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(nazwa_szablonu=="SpisTreści")then
return true,1;
else
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
local parametr_linku;
if(tabela_spisu[1]==true)then
local numer_link=tabela_spisu["numer_link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
else
local numer_link=tabela_spisu["link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
end;
if(parametr_linku)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
end;
end;
end;
end;
end);
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
end;
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
--czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
return true;
elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
tak=true;
break;
elseif(czy_okladka)then
tak=true;
break;
end;
end;
end;
return (not tak);
end;
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local start=1;
while(true)do
local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start);
local koniec_obiekt;local kod_obiekt;local obiekt=nil;
if(start_szablon)then
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local kod=kod_szablon;
local obiekt=obiekt_szablon;
local kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
if(czy_element)then
return true;
end;
end;
start=koniec_szablon;
else
return false;
end;
end;
end;
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=false;
local techniczne_modul=require("Module:Techniczne");
linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
if(tak)then return true;end;
end;
return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local techniczne_modul=require("Module:Techniczne");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true);
if(czy_zerowy_spis_rzeczy)then
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
else
liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial;
end;
else
return;
end;
end;
return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return;end;
return true;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa)and(zawartosc))then
if(nazwa=="center")then
return true;
end;
end;
end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod,poziom_iteracji=iterator();
local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(not wynik)then
local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
end;
end;
end;
if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
else
return;
end;
end;
return nil;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona;
if(czy_rozdzial_rownaniowy_dodatni)then
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu)
else
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
end;
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(liczba_szablon_centrowany)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
if(naglowek)then
if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(naglowek,nil);
end;
end;
else
local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu];
if(naglowek)then
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if((naglowek)and(poziom_naglowka))then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end;
return true;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="center")then
if(zawartosc)then
if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(zawartosc,nil);
end;
end;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
if(zawartosc)then
local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
if(numer_rozdzialu)then
return __FUNKCJA(zawartosc,numer_rozdzialu);
end;
end;
end;
return true;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
wzor_rozdzialu_dodatniego,
true,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
return true;
end);
if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
local _max_min;
if(czy_od_tylu)then
_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
else
_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
end;
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
end;
end;
return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local linki=function(zawartosc)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
elseif(obiekt=="SZABLON")then
local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
end);
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
if(obiekt=="SZABLON")then
local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
local zawartosc;
if(not czy_numer_parametru_naglowka)then
czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(not czy_numer_parametru_naglowka)then return nil;end;
local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc_szablonu)then return nil;end;
zawartosc_szablonu=mw.text.trim(zawartosc_szablonu);
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu);
if((not naglowek)or(not poziom_naglowka))then return nil;end;
zawartosc=naglowek;
else
zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc)then return nil;end;
end;
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end);
return szablon,obiekt,kod;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
return nil;
end;
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
or(mw.ustring.match(str,"^[%s%p%w]*$")))
)then return nil;end;
local ile_punktowanych=0;
local szablonowe_modul=require("Module:Szablonowe");
local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
ile_punktowanych=ile_punktowanych+1;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
ile_punktowanych=ile_punktowanych+1;
break;
end;
end;
end;
end);
if(ile_punktowanych>=ile)then
return nil;
end;
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
if(czy_zeruj)then
tab_zmienne.liczba_nie_okladka_artykul=nil;
tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
tab_zmienne.czy_ten_rozdzial=nil;
--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
end;
return true;
end;
end;
return nil;
end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
local odtylu=liczba_obiekt_start_spac_par;
local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
local czy_fun=false;
local czy_pierwszy=nil;
local liczba_koniec_naglowek_poczt=nil;
local szablonowe_modul=require("Module:Szablonowe");
while(true)do
local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
if(czy_dodatni==1)then
local _;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
elseif(czy_dodatni==2)then
local str_lista_naglowek;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil;
else
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil;
end;
if(not liczba_start_naglowek_nowe)then
break;
else
poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_tak_spisowe)then
if(not czy_pierwszy)then
liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
czy_pierwszy=true;
end;
if(liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"));
if(czy_pomiedzy_naglowkami
and(((czy_dodatni==1)
and(
((poziom_naglowka_nowe)and(not poziom_naglowka))
or(
((poziom_naglowka_nowe)and(poziom_naglowka))
and(poziom_naglowka_nowe>=poziom_naglowka)
)
)
or(
((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka))
or((czy_dodatni~=1)and(czy_dodatni~=2))
)
)--[[or(
not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu())
)]])
)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
if(not spis_tresci)then
--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
if(czy_wynik)then return false;end;
end;
czy_fun=true;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
end;
end;
odtylu=liczba_start_naglowek_nowe;
end;
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
----
if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
----
local str_spacja_lub_zerowy_naglowek=function(tekst)
local ile_znalezione_linie_wedlug_wzoru=0;
local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
end;
return nil;
end);
if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
return nil;
end;
if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(not liczba_start_rozdzial)then
while(true)do
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
if(not liczba_start_naglowek_temp)then break;end;
end;
end;
elseif(not liczba_start_naglowek)then
local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_naglowek_temp)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
----
local tak=false;
local czy_w_petli=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
if(numer_rodzaju_artykulu==1)then
tak=true;
break;
end;
end;
end;
end;
if((tak)or(not czy_w_petli))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0;
end;
end;
else
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
end;
end;
end;
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
local liczba_spac=0;
if(liczba_start)then
local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
while(true)do
local liczba_start_tekst_stare=liczba_start_tekst;
linia=nil
local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
if(rozdzial_dodatki)then
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
end;
end;
local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
if(spacja)then
liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1;
elseif((not spacja)and(linia))then
local czy_spis=nil;
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local czy_rozdzial_dwukropkowy;
if(not spis_tresci)then
liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_rozdzial)then
liczba_start=liczba_start_rozdzial;
else
czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$");
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
czy_spis=liczba_start_rozdzial and true or nil;
else
liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
czy_spis=true;
end;
if(not liczba_start_rozdzial)then
if(not spis_tresci)then
local szablonowe_modul=require("Module:Szablonowe");
if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
local tak=false;
local czy_okladka=nil;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
tak=true;
break;
end;
end;
end;
liczba_start=tak and liczba_start_tekst or liczba_start;
else
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
else
liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
end;
end;
return liczba_start,liczba_spac,czy_spis;
elseif(not liczba_start_tekst)then
return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
end;
end;
end;
return liczba_start,liczba_spac,nil;
end;
function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)
local liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
return liczba_start,true;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
return liczba_start,true;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then
liczba_start=liczba_start_nowa;
end;
else
liczba_start=liczba_start_sugerowane;
end;
end;
else
liczba_start=liczba_start_sugerowane;
end;
return liczba_start,false;
end;
function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki)
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
----
----
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
else
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
for szablon,obiekt,kod in iterator do
local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_znajdz)then
local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_tekst)then
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
end;
end;
else
return false;
end;
szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
end;
end;
return false;
end;
end;
function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
---
if((liczba_linki_nierozdzialowe_szablonu)
and(
(przed_tekst=="")
or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
)
)then
liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
----
local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false);
if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end;
return liczba_spisowa,false;
end;
else
return liczba_spisowa,false;
end;
end;
end;
function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
while(true)do
local poczatek_nierozdzalowe=liczba_obiekt_koniec;
local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
if(liczba_start_nieszablon_nielink_nierozdzialowa)then
local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
if(rozdzial_dodatki)then
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
end;
end;
local czy_spacje=mw.ustring.match(linia,"^%s*$");
if(not czy_spacje)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
elseif(czy_spacje)then
liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
end;
else
liczba_koniec=#tekst_rozwiniety_calego_artykulu;
return liczba_koniec;
end;
end;
return liczba_koniec;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local obiekt="SZABLON";
local kod=kod_szablon and tonumber(kod_szablon) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
----
local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
end);
if(liczba_koniec_szablon)then
return liczba_koniec_szablon,norma_wzoru;
end;
elseif(not liczba_start_szablon)then
return nil;
end;
end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=nil;
local techniczne_modul=require("Module:Techniczne");
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
return true;
end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not liczba_rozdzial_start)then
liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)then tak=true;end;
end;
if(liczba_rozdzial_start)then
local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
if(not tak)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
end;
elseif(liczba_rozdzial_start3)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
elseif(liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
end;
end;
-----
local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
if((obiekt)and(kod)and(dalszy_tekst))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
return linia;
end;
end;
linia=dalszy_tekst or linia;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if(czy_element_spisu)then
return linia;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
return linia;
else
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return "";
end);
return wynik;
end;
end;
end;
return "";
end);
tekst=tekst1..str_bibliografia..tekst2;
end;
return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
----
local liczba_start=nil;local liczba_koniec=nil;
----
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
-----
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
----
local liczba_obiekt_koniec=1;
local liczba_pierwszy_rozdzialowy_artykul=nil;
local liczba_nie_okladka_artykul=nil;
local tab_nazwa_spisow_przekierowaniowych={};
local liczba_start_rozdzial=1;
local liczba_obiekt_start_poprz=nil;
local liczba_obiekt_koniec_poprz=nil;
local liczba_nie_okladka_artykul_koniec=nil;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
if(liczba_start_szablon)then
liczba_obiekt_koniec=liczba_koniec_szablon;
--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local czy_rozdzial_dodatni;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=((czy_dobry_obiekt)and(
(
(lista_szablon~="")and(
(przerwa_szablon=="")
or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))
or(not mw.ustring.match(lista_szablon,"^:"))
)
)
or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))
));
czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_element_spisu)or(czy_okladka))then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
local tak=false;
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu_temp)and(not czy_okladka_temp))then
if(numer_rodzaju_artykulu_temp==1)then
tak=true;
break;
end;
end;
end;
end;
if(tak)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
end;
end;
liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
----
if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
local czy_bez_naglowka=nil;
local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil;
local czy_ten_rozdzial=true;
local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
local tab_zmienne={
liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
czy_ten_rozdzial=czy_ten_rozdzial,
};
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
if(not czy_ten_rozdzial)then
if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
liczba_obiekt_start_nowe=liczba_obiekt_start;
czy_ten_rozdzial=true;
tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
end;
end;
---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy;
liczba_start_naglowek=(
(not liczba_spis_tresci_start)
or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany;
-- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni;
or((poziom_naglowka_start)and(poziom_naglowka))and(
((poziom_naglowka_start>0)and(poziom_naglowka<=0))
or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka))
or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka))
)
) and liczba_spis_tresci_start
or liczba_start_naglowek;
----
if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
----
czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
----
if(liczba_start_naglowek)then
local liczba_przed_rozdzialem;local czy_znajdz;
liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz);
if(czy_break)then break;end;
else
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
return true;
end;
end;
return nil;
end);
if(liczba_start_naglowek)then
liczba_obiekt_start_nowe=liczba_start_naglowek;
end;
--[[]]
local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz);
if(czy_break)then break;end;
end;
break;
else
liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
liczba_nie_okladka_artykul_koniec=nil;
end;
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
else
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
end;
end;
else
break;
end;
end;
if(not liczba_start)then return "";end;
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true);
----
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_koniec=liczba_koniec_szablon;
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_znalezione=nil;
if(liczba_start<=liczba_obiekt_start)then
czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
end;
if(czy_znalezione)then
liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec);
break;
end;
end;
else
break;
end;
end;
if(liczba_koniec)then
local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end;
else
break;
end;
end;
end;
if(not liczba_koniec)then return "";end;
if(liczba_start>=liczba_koniec)then return "";end;
--- Licencja ----
local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
liczba_koniec=licencja_koniec;
end;
-----
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
-----
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
--mw.log(tekst)
--- Licencja ----
--mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
--mw.log("TYTAN1",tekst,"TYTAN2")
--return nil;
--local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
iilt9nvw1mz5v10vglkgzzxkcbtndj6
552933
552915
2026-08-23T14:06:16Z
Persino
2851
552933
Scribunto
text/plain
local p={};
function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do or 1;
local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil;
while(true)do
local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))then
return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
end;
a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
if(not jak)then
if(a1==b1)then
liczba_start=b1+1;
else
liczba_start=b1;
end;
else
liczba_start=b1+1;
end;
end;
end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;
local dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
if(numer_rodzaju_artykulu==1)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
local function StronyWstepu(artykul)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=true;
for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
tak=tak and (not mw.ustring.match(artykul,wzor));
if(not tak)then return tak;end;
end;
return tak;
end;
if((czy_glowny_spis_tresci)and(artykul==""))then
return false,numer_rodzaju_artykulu,czy_podrecznik,false;
else
if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
return true,numer_rodzaju_artykulu,czy_podrecznik,false;
else
return true,numer_rodzaju_artykulu,czy_podrecznik,true;
end;
end;
else
return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
end;
end;
end;
return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(obiekt=="SZABLON")then
local szablonowe_modul=require("Module:Szablonowe");
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(nazwa_szablonu=="SpisTreści")then
return true,1;
else
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
local parametr_linku;
if(tabela_spisu[1]==true)then
local numer_link=tabela_spisu["numer_link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
else
local numer_link=tabela_spisu["link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
end;
if(parametr_linku)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
end;
end;
end;
end;
end);
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
end;
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
--czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
return true;
elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
tak=true;
break;
elseif(czy_okladka)then
tak=true;
break;
end;
end;
end;
return (not tak);
end;
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local start=1;
while(true)do
local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start);
local koniec_obiekt;local kod_obiekt;local obiekt=nil;
if(start_szablon)then
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local kod=kod_szablon;
local obiekt=obiekt_szablon;
local kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
if(czy_element)then
return true;
end;
end;
start=koniec_szablon;
else
return false;
end;
end;
end;
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=false;
local techniczne_modul=require("Module:Techniczne");
linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
if(tak)then return true;end;
end;
return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local techniczne_modul=require("Module:Techniczne");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true);
if(czy_zerowy_spis_rzeczy)then
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
else
liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial;
end;
else
return;
end;
end;
return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return;end;
return true;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa)and(zawartosc))then
if(nazwa=="center")then
return true;
end;
end;
end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod,poziom_iteracji=iterator();
local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(not wynik)then
local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
end;
end;
end;
if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
else
return;
end;
end;
return nil;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona;
if(czy_rozdzial_rownaniowy_dodatni)then
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu)
else
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
end;
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(liczba_szablon_centrowany)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
if(naglowek)then
if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(naglowek,nil);
end;
end;
else
local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu];
if(naglowek)then
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if((naglowek)and(poziom_naglowka))then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end;
return true;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="center")then
if(zawartosc)then
if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(zawartosc,nil);
end;
end;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
if(zawartosc)then
local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
if(numer_rozdzialu)then
return __FUNKCJA(zawartosc,numer_rozdzialu);
end;
end;
end;
return true;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
wzor_rozdzialu_dodatniego,
true,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
return true;
end);
if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
local _max_min;
if(czy_od_tylu)then
_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
else
_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
end;
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
end;
end;
return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local linki=function(zawartosc)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
elseif(obiekt=="SZABLON")then
local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
end);
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
if(obiekt=="SZABLON")then
local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
local zawartosc;
if(not czy_numer_parametru_naglowka)then
czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(not czy_numer_parametru_naglowka)then return nil;end;
local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc_szablonu)then return nil;end;
zawartosc_szablonu=mw.text.trim(zawartosc_szablonu);
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu);
if((not naglowek)or(not poziom_naglowka))then return nil;end;
zawartosc=naglowek;
else
zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc)then return nil;end;
end;
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end);
return szablon,obiekt,kod;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
return nil;
end;
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
or(mw.ustring.match(str,"^[%s%p%w]*$")))
)then return nil;end;
local ile_punktowanych=0;
local szablonowe_modul=require("Module:Szablonowe");
local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
ile_punktowanych=ile_punktowanych+1;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
ile_punktowanych=ile_punktowanych+1;
break;
end;
end;
end;
end);
if(ile_punktowanych>=ile)then
return nil;
end;
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
if(czy_zeruj)then
tab_zmienne.liczba_nie_okladka_artykul=nil;
tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
tab_zmienne.czy_ten_rozdzial=nil;
--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
end;
return true;
end;
end;
return nil;
end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
local odtylu=liczba_obiekt_start_spac_par;
local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
local czy_fun=false;
local czy_pierwszy=nil;
local liczba_koniec_naglowek_poczt=nil;
local szablonowe_modul=require("Module:Szablonowe");
while(true)do
local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
if(czy_dodatni==1)then
local _;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
elseif(czy_dodatni==2)then
local str_lista_naglowek;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil;
else
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil;
end;
if(not liczba_start_naglowek_nowe)then
break;
else
poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_tak_spisowe)then
if(not czy_pierwszy)then
liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
czy_pierwszy=true;
end;
if(liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"));
if(czy_pomiedzy_naglowkami
and(((czy_dodatni==1)
and(
((poziom_naglowka_nowe)and(not poziom_naglowka))
or(
((poziom_naglowka_nowe)and(poziom_naglowka))
and(poziom_naglowka_nowe>=poziom_naglowka)
)
)
or(
((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka))
or((czy_dodatni~=1)and(czy_dodatni~=2))
)
)--[[or(
not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu())
)]])
)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
if(not spis_tresci)then
--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
if(czy_wynik)then return false;end;
end;
czy_fun=true;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
end;
end;
odtylu=liczba_start_naglowek_nowe;
end;
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
----
if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
----
local str_spacja_lub_zerowy_naglowek=function(tekst)
local ile_znalezione_linie_wedlug_wzoru=0;
local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
end;
return nil;
end);
if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
return nil;
end;
if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(not liczba_start_rozdzial)then
while(true)do
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
if(not liczba_start_naglowek_temp)then break;end;
end;
end;
elseif(not liczba_start_naglowek)then
local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_naglowek_temp)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
----
local tak=false;
local czy_w_petli=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
if(numer_rodzaju_artykulu==1)then
tak=true;
break;
end;
end;
end;
end;
if((tak)or(not czy_w_petli))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0;
end;
end;
else
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
end;
end;
end;
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
local liczba_spac=0;
if(liczba_start)then
local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
while(true)do
local liczba_start_tekst_stare=liczba_start_tekst;
linia=nil
local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
if(rozdzial_dodatki)then
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
end;
end;
local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
if(spacja)then
liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1;
elseif((not spacja)and(linia))then
local czy_spis=nil;
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local czy_rozdzial_dwukropkowy;
if(not spis_tresci)then
liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_rozdzial)then
liczba_start=liczba_start_rozdzial;
else
czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$");
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
czy_spis=liczba_start_rozdzial and true or nil;
else
liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
czy_spis=true;
end;
if(not liczba_start_rozdzial)then
if(not spis_tresci)then
local szablonowe_modul=require("Module:Szablonowe");
if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
local tak=false;
local czy_okladka=nil;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
tak=true;
break;
end;
end;
end;
liczba_start=tak and liczba_start_tekst or liczba_start;
else
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
else
liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
end;
end;
return liczba_start,liczba_spac,czy_spis;
elseif(not liczba_start_tekst)then
return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
end;
end;
end;
return liczba_start,liczba_spac,nil;
end;
function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki)
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
----
----
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
else
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
for szablon,obiekt,kod in iterator do
local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_znajdz)then
local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_tekst)then
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
end;
end;
else
return false;
end;
szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
end;
end;
return false;
end;
end;
function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
---
if((liczba_linki_nierozdzialowe_szablonu)
and(
(przed_tekst=="")
or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
)
)then
liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
----
local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false);
if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end;
return liczba_spisowa,false;
end;
else
return liczba_spisowa,false;
end;
end;
end;
function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)
local liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
return liczba_start,true;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
return liczba_start,true;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then
liczba_start=liczba_start_nowa;
end;
else
liczba_start=liczba_start_sugerowane;
end;
end;
else
liczba_start=liczba_start_sugerowane;
end;
return liczba_start,false;
end;
function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
while(true)do
local poczatek_nierozdzalowe=liczba_obiekt_koniec;
local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
if(liczba_start_nieszablon_nielink_nierozdzialowa)then
local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
if(rozdzial_dodatki)then
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
end;
end;
local czy_spacje=mw.ustring.match(linia,"^%s*$");
if(not czy_spacje)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
elseif(czy_spacje)then
liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
end;
else
liczba_koniec=#tekst_rozwiniety_calego_artykulu;
return liczba_koniec;
end;
end;
return liczba_koniec;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local obiekt="SZABLON";
local kod=kod_szablon and tonumber(kod_szablon) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
----
local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
end);
if(liczba_koniec_szablon)then
return liczba_koniec_szablon,norma_wzoru;
end;
elseif(not liczba_start_szablon)then
return nil;
end;
end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=nil;
local techniczne_modul=require("Module:Techniczne");
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
return true;
end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not liczba_rozdzial_start)then
liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)then tak=true;end;
end;
if(liczba_rozdzial_start)then
local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
if(not tak)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
end;
elseif(liczba_rozdzial_start3)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
elseif(liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
end;
end;
-----
local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
if((obiekt)and(kod)and(dalszy_tekst))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
return linia;
end;
end;
linia=dalszy_tekst or linia;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if(czy_element_spisu)then
return linia;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
return linia;
else
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return "";
end);
return wynik;
end;
end;
end;
return "";
end);
tekst=tekst1..str_bibliografia..tekst2;
end;
return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
----
local liczba_start=nil;local liczba_koniec=nil;
----
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
-----
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
----
local liczba_obiekt_koniec=1;
local liczba_pierwszy_rozdzialowy_artykul=nil;
local liczba_nie_okladka_artykul=nil;
local tab_nazwa_spisow_przekierowaniowych={};
local liczba_start_rozdzial=1;
local liczba_obiekt_start_poprz=nil;
local liczba_obiekt_koniec_poprz=nil;
local liczba_nie_okladka_artykul_koniec=nil;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
if(liczba_start_szablon)then
liczba_obiekt_koniec=liczba_koniec_szablon;
--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local czy_rozdzial_dodatni;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=((czy_dobry_obiekt)and(
(
(lista_szablon~="")and(
(przerwa_szablon=="")
or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))
or(not mw.ustring.match(lista_szablon,"^:"))
)
)
or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))
));
czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_element_spisu)or(czy_okladka))then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
local tak=false;
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu_temp)and(not czy_okladka_temp))then
if(numer_rodzaju_artykulu_temp==1)then
tak=true;
break;
end;
end;
end;
end;
if(tak)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
end;
end;
liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
----
if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
local czy_bez_naglowka=nil;
local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil;
local czy_ten_rozdzial=true;
local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
local tab_zmienne={
liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
czy_ten_rozdzial=czy_ten_rozdzial,
};
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
if(not czy_ten_rozdzial)then
if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
liczba_obiekt_start_nowe=liczba_obiekt_start;
czy_ten_rozdzial=true;
tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
end;
end;
---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy;
liczba_start_naglowek=(
(not liczba_spis_tresci_start)
or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany;
-- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni;
or((poziom_naglowka_start)and(poziom_naglowka))and(
((poziom_naglowka_start>0)and(poziom_naglowka<=0))
or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka))
or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka))
)
) and liczba_spis_tresci_start
or liczba_start_naglowek;
----
if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
----
czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
----
if(liczba_start_naglowek)then
local liczba_przed_rozdzialem;local czy_znajdz;
liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz);
if(czy_break)then break;end;
else
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
return true;
end;
end;
return nil;
end);
if(liczba_start_naglowek)then
liczba_obiekt_start_nowe=liczba_start_naglowek;
end;
--[[]]
local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz);
if(czy_break)then break;end;
end;
break;
else
liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
liczba_nie_okladka_artykul_koniec=nil;
end;
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
else
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
end;
end;
else
break;
end;
end;
if(not liczba_start)then return "";end;
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true);
----
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_koniec=liczba_koniec_szablon;
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_znalezione=nil;
if(liczba_start<=liczba_obiekt_start)then
czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
end;
if(czy_znalezione)then
liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec);
break;
end;
end;
else
break;
end;
end;
if(liczba_koniec)then
local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end;
else
break;
end;
end;
end;
if(not liczba_koniec)then return "";end;
if(liczba_start>=liczba_koniec)then return "";end;
--- Licencja ----
local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
liczba_koniec=licencja_koniec;
end;
-----
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
-----
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
--mw.log(tekst)
--- Licencja ----
--mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
--mw.log("TYTAN1",tekst,"TYTAN2")
--return nil;
--local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
jyobaazxs2txshl2ctzjsm09bod43pc
553010
552933
2026-08-23T19:00:05Z
Persino
2851
553010
Scribunto
text/plain
local p={};
function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do or 1;
local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil;
while(true)do
local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))then
return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
end;
a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
if(not jak)then
if(a1==b1)then
liczba_start=b1+1;
else
liczba_start=b1;
end;
else
liczba_start=b1+1;
end;
end;
end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;
local dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
if(numer_rodzaju_artykulu==1)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
local function StronyWstepu(artykul)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=true;
for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
tak=tak and (not mw.ustring.match(artykul,wzor));
if(not tak)then return tak;end;
end;
return tak;
end;
if((czy_glowny_spis_tresci)and(artykul==""))then
return false,numer_rodzaju_artykulu,czy_podrecznik,false;
else
if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
return true,numer_rodzaju_artykulu,czy_podrecznik,false;
else
return true,numer_rodzaju_artykulu,czy_podrecznik,true;
end;
end;
else
return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
end;
end;
end;
return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(obiekt=="SZABLON")then
local szablonowe_modul=require("Module:Szablonowe");
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(nazwa_szablonu=="SpisTreści")then
return true,1;
else
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
local parametr_linku;
if(tabela_spisu[1]==true)then
local numer_link=tabela_spisu["numer_link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
else
local numer_link=tabela_spisu["link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
end;
if(parametr_linku)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
end;
end;
end;
end;
end);
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
end;
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
--czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
return true;
elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
tak=true;
break;
elseif(czy_okladka)then
tak=true;
break;
end;
end;
end;
return (not tak);
end;
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,bez_innych_stron)
local start=1;
while(true)do
local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start);
local koniec_obiekt;local kod_obiekt;local obiekt=nil;
if(start_szablon)then
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local kod=kod_szablon;
local obiekt=obiekt_szablon;
local kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((czy_element_spisu)and((czy_wszystkie_linki)or(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((bez_innych_stron)and(numer_rodzaju_artykulu>1)))))then
return true;
end;
end;
start=koniec_szablon;
else
return false;
end;
end;
end;
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=false;
local techniczne_modul=require("Module:Techniczne");
linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
if(tak)then return true;end;
end;
return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local techniczne_modul=require("Module:Techniczne");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true);
if(czy_zerowy_spis_rzeczy)then
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
else
liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial;
end;
else
return;
end;
end;
return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return;end;
return true;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa)and(zawartosc))then
if(nazwa=="center")then
return true;
end;
end;
end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod,poziom_iteracji=iterator();
local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(not wynik)then
local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
end;
end;
end;
if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
else
return;
end;
end;
return nil;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona;
if(czy_rozdzial_rownaniowy_dodatni)then
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu)
else
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
end;
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(liczba_szablon_centrowany)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
if(naglowek)then
if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(naglowek,nil);
end;
end;
else
local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu];
if(naglowek)then
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if((naglowek)and(poziom_naglowka))then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end;
return true;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="center")then
if(zawartosc)then
if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(zawartosc,nil);
end;
end;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
if(zawartosc)then
local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
if(numer_rozdzialu)then
return __FUNKCJA(zawartosc,numer_rozdzialu);
end;
end;
end;
return true;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
wzor_rozdzialu_dodatniego,
true,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
return true;
end);
if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
local _max_min;
if(czy_od_tylu)then
_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
else
_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
end;
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
end;
end;
return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local linki=function(zawartosc)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
elseif(obiekt=="SZABLON")then
local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
end);
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
if(obiekt=="SZABLON")then
local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
local zawartosc;
if(not czy_numer_parametru_naglowka)then
czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(not czy_numer_parametru_naglowka)then return nil;end;
local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc_szablonu)then return nil;end;
zawartosc_szablonu=mw.text.trim(zawartosc_szablonu);
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu);
if((not naglowek)or(not poziom_naglowka))then return nil;end;
zawartosc=naglowek;
else
zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc)then return nil;end;
end;
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end);
return szablon,obiekt,kod;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
return nil;
end;
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
or(mw.ustring.match(str,"^[%s%p%w]*$")))
)then return nil;end;
local ile_punktowanych=0;
local szablonowe_modul=require("Module:Szablonowe");
local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
ile_punktowanych=ile_punktowanych+1;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
ile_punktowanych=ile_punktowanych+1;
break;
end;
end;
end;
end);
if(ile_punktowanych>=ile)then
return nil;
end;
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
if(czy_zeruj)then
tab_zmienne.liczba_nie_okladka_artykul=nil;
tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
tab_zmienne.czy_ten_rozdzial=nil;
--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
end;
return true;
end;
end;
return nil;
end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
local odtylu=liczba_obiekt_start_spac_par;
local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
local czy_fun=false;
local czy_pierwszy=nil;
local liczba_koniec_naglowek_poczt=nil;
local szablonowe_modul=require("Module:Szablonowe");
while(true)do
local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
if(czy_dodatni==1)then
local _;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
elseif(czy_dodatni==2)then
local str_lista_naglowek;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil;
else
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil;
end;
if(not liczba_start_naglowek_nowe)then
break;
else
poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_tak_spisowe)then
if(not czy_pierwszy)then
liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
czy_pierwszy=true;
end;
if(liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"));
if(czy_pomiedzy_naglowkami
and(((czy_dodatni==1)
and(
((poziom_naglowka_nowe)and(not poziom_naglowka))
or(
((poziom_naglowka_nowe)and(poziom_naglowka))
and(poziom_naglowka_nowe>=poziom_naglowka)
)
)
or(
((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka))
or((czy_dodatni~=1)and(czy_dodatni~=2))
)
)--[[or(
not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu())
)]])
)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
if(not spis_tresci)then
--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
if(czy_wynik)then return false;end;
end;
czy_fun=true;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
end;
end;
odtylu=liczba_start_naglowek_nowe;
end;
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
----
if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
----
local str_spacja_lub_zerowy_naglowek=function(tekst)
local ile_znalezione_linie_wedlug_wzoru=0;
local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
end;
return nil;
end);
if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
return nil;
end;
if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(not liczba_start_rozdzial)then
while(true)do
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
if(not liczba_start_naglowek_temp)then break;end;
end;
end;
elseif(not liczba_start_naglowek)then
local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_naglowek_temp)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
----
local tak=false;
local czy_w_petli=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
if(numer_rodzaju_artykulu==1)then
tak=true;
break;
end;
end;
end;
end;
if((tak)or(not czy_w_petli))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0;
end;
end;
else
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
end;
end;
end;
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
local liczba_spac=0;
if(liczba_start)then
local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
while(true)do
local liczba_start_tekst_stare=liczba_start_tekst;
linia=nil
local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
if(rozdzial_dodatki)then
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
end;
end;
local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
if(spacja)then
liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1;
elseif((not spacja)and(linia))then
local czy_spis=nil;
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local czy_rozdzial_dwukropkowy;
if(not spis_tresci)then
liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_rozdzial)then
liczba_start=liczba_start_rozdzial;
else
czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$");
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
czy_spis=liczba_start_rozdzial and true or nil;
else
liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
czy_spis=true;
end;
if(not liczba_start_rozdzial)then
if(not spis_tresci)then
local szablonowe_modul=require("Module:Szablonowe");
if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
local tak=false;
local czy_okladka=nil;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
tak=true;
break;
end;
end;
end;
liczba_start=tak and liczba_start_tekst or liczba_start;
else
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
else
liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
end;
end;
return liczba_start,liczba_spac,czy_spis;
elseif(not liczba_start_tekst)then
return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
end;
end;
end;
return liczba_start,liczba_spac,nil;
end;
function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki)
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
----
----
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
else
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
for szablon,obiekt,kod in iterator do
local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_znajdz)then
local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_tekst)then
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
end;
end;
else
return false;
end;
szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
end;
end;
return false;
end;
end;
function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
---
if((liczba_linki_nierozdzialowe_szablonu)
and(
(przed_tekst=="")
or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
)
)then
liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
----
local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false);
if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end;
return liczba_spisowa,false;
end;
else
return liczba_spisowa,false;
end;
end;
end;
function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)
local liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
return liczba_start,true;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
return liczba_start,true;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then
liczba_start=liczba_start_nowa;
end;
else
liczba_start=liczba_start_sugerowane;
end;
end;
else
liczba_start=liczba_start_sugerowane;
end;
return liczba_start,false;
end;
function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
while(true)do
local poczatek_nierozdzalowe=liczba_obiekt_koniec;
local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
if(liczba_start_nieszablon_nielink_nierozdzialowa)then
local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
if(rozdzial_dodatki)then
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
end;
end;
local czy_spacje=mw.ustring.match(linia,"^%s*$");
if(not czy_spacje)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
elseif(czy_spacje)then
liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
end;
else
liczba_koniec=#tekst_rozwiniety_calego_artykulu;
return liczba_koniec;
end;
end;
return liczba_koniec;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local obiekt="SZABLON";
local kod=kod_szablon and tonumber(kod_szablon) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
----
local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
end);
if(liczba_koniec_szablon)then
return liczba_koniec_szablon,norma_wzoru;
end;
elseif(not liczba_start_szablon)then
return nil;
end;
end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=nil;
local techniczne_modul=require("Module:Techniczne");
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
return true;
end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not liczba_rozdzial_start)then
liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)then tak=true;end;
end;
if(liczba_rozdzial_start)then
local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
if(not tak)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
end;
elseif(liczba_rozdzial_start3)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
elseif(liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
end;
end;
-----
local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
if((obiekt)and(kod)and(dalszy_tekst))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
return linia;
end;
end;
linia=dalszy_tekst or linia;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if(czy_element_spisu)then
return linia;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
return linia;
else
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return "";
end);
return wynik;
end;
end;
end;
return "";
end);
tekst=tekst1..str_bibliografia..tekst2;
end;
return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
----
local liczba_start=nil;local liczba_koniec=nil;
----
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
-----
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
----
local liczba_obiekt_koniec=1;
local liczba_pierwszy_rozdzialowy_artykul=nil;
local liczba_nie_okladka_artykul=nil;
local tab_nazwa_spisow_przekierowaniowych={};
local liczba_start_rozdzial=1;
local liczba_obiekt_start_poprz=nil;
local liczba_obiekt_koniec_poprz=nil;
local liczba_nie_okladka_artykul_koniec=nil;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
if(liczba_start_szablon)then
liczba_obiekt_koniec=liczba_koniec_szablon;
--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local czy_rozdzial_dodatni;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=((czy_dobry_obiekt)and(
(
(lista_szablon~="")and(
(przerwa_szablon=="")
or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))
or(not mw.ustring.match(lista_szablon,"^:"))
)
)
or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))
));
czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_element_spisu)or(czy_okladka))then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
local tak=false;
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu_temp)and(not czy_okladka_temp))then
if(numer_rodzaju_artykulu_temp==1)then
tak=true;
break;
end;
end;
end;
end;
if(tak)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
end;
end;
liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
----
if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
local czy_bez_naglowka=nil;
local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil;
local czy_ten_rozdzial=true;
local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
local tab_zmienne={
liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
czy_ten_rozdzial=czy_ten_rozdzial,
};
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
if(not czy_ten_rozdzial)then
if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
liczba_obiekt_start_nowe=liczba_obiekt_start;
czy_ten_rozdzial=true;
tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
end;
end;
---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy;
liczba_start_naglowek=(
(not liczba_spis_tresci_start)
or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany;
-- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni;
or((poziom_naglowka_start)and(poziom_naglowka))and(
((poziom_naglowka_start>0)and(poziom_naglowka<=0))
or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka))
or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka))
)
) and liczba_spis_tresci_start
or liczba_start_naglowek;
----
if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
----
czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
----
if(liczba_start_naglowek)then
local liczba_przed_rozdzialem;local czy_znajdz;
liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz);
if(czy_break)then break;end;
else
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
return true;
end;
end;
return nil;
end);
if(liczba_start_naglowek)then
liczba_obiekt_start_nowe=liczba_start_naglowek;
end;
--[[]]
local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz);
if(czy_break)then break;end;
end;
break;
else
liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
liczba_nie_okladka_artykul_koniec=nil;
end;
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
else
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
end;
end;
else
break;
end;
end;
if(not liczba_start)then return "";end;
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true);
----
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_koniec=liczba_koniec_szablon;
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_znalezione=nil;
if(liczba_start<=liczba_obiekt_start)then
czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
end;
if(czy_znalezione)then
liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec);
break;
end;
end;
else
break;
end;
end;
if(liczba_koniec)then
local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true,true,true);
if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end;
else
break;
end;
end;
end;
if(not liczba_koniec)then return "";end;
if(liczba_start>=liczba_koniec)then return "";end;
--- Licencja ----
local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
liczba_koniec=licencja_koniec;
end;
-----
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
-----
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
--mw.log(tekst)
--- Licencja ----
--mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
--mw.log("TYTAN1",tekst,"TYTAN2")
--return nil;
--local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
o6m5iz6ujxffvzoejkuxebeak2bkc12
553012
553010
2026-08-23T19:47:21Z
Persino
2851
553012
Scribunto
text/plain
local p={};
function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do or 1;
local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil;
while(true)do
local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))then
return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
end;
a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
if(not jak)then
if(a1==b1)then
liczba_start=b1+1;
else
liczba_start=b1;
end;
else
liczba_start=b1+1;
end;
end;
end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;
local dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
if(numer_rodzaju_artykulu==1)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
local function StronyWstepu(artykul)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=true;
for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
tak=tak and (not mw.ustring.match(artykul,wzor));
if(not tak)then return tak;end;
end;
return tak;
end;
if((czy_glowny_spis_tresci)and(artykul==""))then
return false,numer_rodzaju_artykulu,czy_podrecznik,false;
else
if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
return true,numer_rodzaju_artykulu,czy_podrecznik,false;
else
return true,numer_rodzaju_artykulu,czy_podrecznik,true;
end;
end;
else
return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
end;
end;
end;
return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(obiekt=="SZABLON")then
local szablonowe_modul=require("Module:Szablonowe");
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(nazwa_szablonu=="SpisTreści")then
return true,1;
else
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
local parametr_linku;
if(tabela_spisu[1]==true)then
local numer_link=tabela_spisu["numer_link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
else
local numer_link=tabela_spisu["link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
end;
if(parametr_linku)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
end;
end;
end;
end;
end);
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
end;
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
--czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
return true;
elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
tak=true;
break;
elseif(czy_okladka)then
tak=true;
break;
end;
end;
end;
return (not tak);
end;
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,bez_innych_stron)
local start=1;
while(true)do
local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start);
local koniec_obiekt;local kod_obiekt;local obiekt=nil;
if(start_szablon)then
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local kod=kod_szablon;
local obiekt=obiekt_szablon;
local kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((czy_element_spisu)and((czy_wszystkie_linki)or(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((bez_innych_stron)and(numer_rodzaju_artykulu>1)))))then
return true;
end;
end;
start=koniec_szablon;
else
return false;
end;
end;
end;
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=false;
local techniczne_modul=require("Module:Techniczne");
linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
if(tak)then return true;end;
end;
return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local techniczne_modul=require("Module:Techniczne");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true);
if(czy_zerowy_spis_rzeczy)then
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
else
liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial;
end;
else
return;
end;
end;
return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return;end;
return true;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa)and(zawartosc))then
if(nazwa=="center")then
return true;
end;
end;
end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod,poziom_iteracji=iterator();
local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(not wynik)then
local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
end;
end;
end;
if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
else
return;
end;
end;
return nil;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona;
if(czy_rozdzial_rownaniowy_dodatni)then
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu)
else
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
end;
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(liczba_szablon_centrowany)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
if(naglowek)then
if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(naglowek,nil);
end;
end;
else
local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu];
if(naglowek)then
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if((naglowek)and(poziom_naglowka))then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end;
return true;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="center")then
if(zawartosc)then
if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(zawartosc,nil);
end;
end;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
if(zawartosc)then
local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
if(numer_rozdzialu)then
return __FUNKCJA(zawartosc,numer_rozdzialu);
end;
end;
end;
return true;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
wzor_rozdzialu_dodatniego,
true,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
return true;
end);
if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
local _max_min;
if(czy_od_tylu)then
_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
else
_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
end;
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
end;
end;
return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local linki=function(zawartosc)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
elseif(obiekt=="SZABLON")then
local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
end);
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
if(obiekt=="SZABLON")then
local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
local zawartosc;
if(not czy_numer_parametru_naglowka)then
czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(not czy_numer_parametru_naglowka)then return nil;end;
local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc_szablonu)then return nil;end;
zawartosc_szablonu=mw.text.trim(zawartosc_szablonu);
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu);
if((not naglowek)or(not poziom_naglowka))then return nil;end;
zawartosc=naglowek;
else
zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc)then return nil;end;
end;
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end);
return szablon,obiekt,kod;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
return nil;
end;
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
or(mw.ustring.match(str,"^[%s%p%w]*$")))
)then return nil;end;
local ile_punktowanych=0;
local szablonowe_modul=require("Module:Szablonowe");
local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
ile_punktowanych=ile_punktowanych+1;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
ile_punktowanych=ile_punktowanych+1;
break;
end;
end;
end;
end);
if(ile_punktowanych>=ile)then
return nil;
end;
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
if(czy_zeruj)then
tab_zmienne.liczba_nie_okladka_artykul=nil;
tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
tab_zmienne.czy_ten_rozdzial=nil;
--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
end;
return true;
end;
end;
return nil;
end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
local odtylu=liczba_obiekt_start_spac_par;
local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
local czy_fun=false;
local czy_pierwszy=nil;
local liczba_koniec_naglowek_poczt=nil;
local szablonowe_modul=require("Module:Szablonowe");
while(true)do
local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
if(czy_dodatni==1)then
local _;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
elseif(czy_dodatni==2)then
local str_lista_naglowek;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil;
else
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil;
end;
if(not liczba_start_naglowek_nowe)then
break;
else
poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_tak_spisowe)then
if(not czy_pierwszy)then
liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
czy_pierwszy=true;
end;
if(liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"));
if(czy_pomiedzy_naglowkami
and(((czy_dodatni==1)
and(
((poziom_naglowka_nowe)and(not poziom_naglowka))
or(
((poziom_naglowka_nowe)and(poziom_naglowka))
and(poziom_naglowka_nowe>=poziom_naglowka)
)
)
or(
((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka))
or((czy_dodatni~=1)and(czy_dodatni~=2))
)
)--[[or(
not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu())
)]])
)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
if(not spis_tresci)then
--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
if(czy_wynik)then return false;end;
end;
czy_fun=true;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
end;
end;
odtylu=liczba_start_naglowek_nowe;
end;
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
----
if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
----
local str_spacja_lub_zerowy_naglowek=function(tekst)
local ile_znalezione_linie_wedlug_wzoru=0;
local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
end;
return nil;
end);
if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
return nil;
end;
if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(not liczba_start_rozdzial)then
while(true)do
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
if(not liczba_start_naglowek_temp)then break;end;
end;
end;
elseif(not liczba_start_naglowek)then
local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_naglowek_temp)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
----
local tak=false;
local czy_w_petli=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
if(numer_rodzaju_artykulu==1)then
tak=true;
break;
end;
end;
end;
end;
if((tak)or(not czy_w_petli))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0;
end;
end;
else
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
end;
end;
end;
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
local liczba_spac=0;
if(liczba_start)then
local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
while(true)do
local liczba_start_tekst_stare=liczba_start_tekst;
linia=nil
local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
if(rozdzial_dodatki)then
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
end;
end;
local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
if(spacja)then
liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1;
elseif((not spacja)and(linia))then
local czy_spis=nil;
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local czy_rozdzial_dwukropkowy;
if(not spis_tresci)then
liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_rozdzial)then
liczba_start=liczba_start_rozdzial;
else
czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$");
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
czy_spis=liczba_start_rozdzial and true or nil;
else
liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
czy_spis=true;
end;
if(not liczba_start_rozdzial)then
if(not spis_tresci)then
local szablonowe_modul=require("Module:Szablonowe");
if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
local tak=false;
local czy_okladka=nil;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
tak=true;
break;
end;
end;
end;
liczba_start=tak and liczba_start_tekst or liczba_start;
czy_spis=((czy_rozdzial_dwukropkowy)and(not tak))and true or nil;
else
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
czy_spis=czy_rozdzial_dwukropkowy and true or nil;
end;
else
liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
end;
end;
return liczba_start,liczba_spac,czy_spis;
elseif(not liczba_start_tekst)then
return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
end;
end;
end;
return liczba_start,liczba_spac,nil;
end;
function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki)
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
----
----
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
else
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
for szablon,obiekt,kod in iterator do
local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_znajdz)then
local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_tekst)then
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
end;
end;
else
return false;
end;
szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
end;
end;
return false;
end;
end;
function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
---
if((liczba_linki_nierozdzialowe_szablonu)
and(
(przed_tekst=="")
or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
)
)then
liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
----
local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false);
if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end;
return liczba_spisowa,false;
end;
else
return liczba_spisowa,false;
end;
end;
end;
function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)
local liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
return liczba_start,true;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
return liczba_start,true;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then
liczba_start=liczba_start_nowa;
end;
else
liczba_start=liczba_start_sugerowane;
end;
end;
else
liczba_start=liczba_start_sugerowane;
end;
return liczba_start,false;
end;
function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
while(true)do
local poczatek_nierozdzalowe=liczba_obiekt_koniec;
local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
if(liczba_start_nieszablon_nielink_nierozdzialowa)then
local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
if(rozdzial_dodatki)then
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
end;
end;
local czy_spacje=mw.ustring.match(linia,"^%s*$");
if(not czy_spacje)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
elseif(czy_spacje)then
liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
end;
else
liczba_koniec=#tekst_rozwiniety_calego_artykulu;
return liczba_koniec;
end;
end;
return liczba_koniec;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local obiekt="SZABLON";
local kod=kod_szablon and tonumber(kod_szablon) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
----
local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
end);
if(liczba_koniec_szablon)then
return liczba_koniec_szablon,norma_wzoru;
end;
elseif(not liczba_start_szablon)then
return nil;
end;
end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=nil;
local techniczne_modul=require("Module:Techniczne");
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
return true;
end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not liczba_rozdzial_start)then
liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)then tak=true;end;
end;
if(liczba_rozdzial_start)then
local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
if(not tak)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
end;
elseif(liczba_rozdzial_start3)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
elseif(liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
end;
end;
-----
local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
if((obiekt)and(kod)and(dalszy_tekst))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
return linia;
end;
end;
linia=dalszy_tekst or linia;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if(czy_element_spisu)then
return linia;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
return linia;
else
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return "";
end);
return wynik;
end;
end;
end;
return "";
end);
tekst=tekst1..str_bibliografia..tekst2;
end;
return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
----
local liczba_start=nil;local liczba_koniec=nil;
----
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
-----
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
----
local liczba_obiekt_koniec=1;
local liczba_pierwszy_rozdzialowy_artykul=nil;
local liczba_nie_okladka_artykul=nil;
local tab_nazwa_spisow_przekierowaniowych={};
local liczba_start_rozdzial=1;
local liczba_obiekt_start_poprz=nil;
local liczba_obiekt_koniec_poprz=nil;
local liczba_nie_okladka_artykul_koniec=nil;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
if(liczba_start_szablon)then
liczba_obiekt_koniec=liczba_koniec_szablon;
--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local czy_rozdzial_dodatni;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=((czy_dobry_obiekt)and(
(
(lista_szablon~="")and(
(przerwa_szablon=="")
or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))
or(not mw.ustring.match(lista_szablon,"^:"))
)
)
or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))
));
czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_element_spisu)or(czy_okladka))then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
local tak=false;
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu_temp)and(not czy_okladka_temp))then
if(numer_rodzaju_artykulu_temp==1)then
tak=true;
break;
end;
end;
end;
end;
if(tak)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
end;
end;
liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
----
if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
local czy_bez_naglowka=nil;
local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil;
local czy_ten_rozdzial=true;
local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
local tab_zmienne={
liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
czy_ten_rozdzial=czy_ten_rozdzial,
};
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
if(not czy_ten_rozdzial)then
if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
liczba_obiekt_start_nowe=liczba_obiekt_start;
czy_ten_rozdzial=true;
tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
end;
end;
---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy;
liczba_start_naglowek=(
(not liczba_spis_tresci_start)
or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany;
-- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni;
or((poziom_naglowka_start)and(poziom_naglowka))and(
((poziom_naglowka_start>0)and(poziom_naglowka<=0))
or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka))
or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka))
)
) and liczba_spis_tresci_start
or liczba_start_naglowek;
----
if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
----
czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
----
if(liczba_start_naglowek)then
local liczba_przed_rozdzialem;local czy_znajdz;
liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz);
if(czy_break)then break;end;
else
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
return true;
end;
end;
return nil;
end);
if(liczba_start_naglowek)then
liczba_obiekt_start_nowe=liczba_start_naglowek;
end;
--[[]]
local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz);
if(czy_break)then break;end;
end;
break;
else
liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
liczba_nie_okladka_artykul_koniec=nil;
end;
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
else
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
end;
end;
else
break;
end;
end;
if(not liczba_start)then return "";end;
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true);
----
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_koniec=liczba_koniec_szablon;
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_znalezione=nil;
if(liczba_start<=liczba_obiekt_start)then
czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
end;
if(czy_znalezione)then
liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec);
break;
end;
end;
else
break;
end;
end;
if(liczba_koniec)then
local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true,true,true);
if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end;
else
break;
end;
end;
end;
if(not liczba_koniec)then return "";end;
if(liczba_start>=liczba_koniec)then return "";end;
--- Licencja ----
local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
liczba_koniec=licencja_koniec;
end;
-----
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
-----
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
--mw.log(tekst)
--- Licencja ----
--mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
--mw.log("TYTAN1",tekst,"TYTAN2")
--return nil;
--local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
6yg2qqjna8jdx8rzbbeozrltnq25wqo
Wikibooks:Mechanizm MediaWiki
4
60755
553070
552297
2026-08-24T01:39:01Z
Persino
2851
/* Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} */
553070
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Wstęp}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
Przedstawimy tutaj problemy z mechanizmem MediaWiki, poczynając od opisu szablonów i modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w zastosowaniach również do wikikodu, na polskim {{NS|pk=mj|w=tak|l=tak}}.
== Szablony ==
Przedstawiamy tutaj w dwóch formach opis wszystkich szablonów, dostępnych na polskim {{NS|p=mj|l=tak}}, w postaci listy.
=== Opis wizualny ===
* {{lr|Szablony}} - strona główna zbioru wszystkich szablonów, opisu ich, wizualnego i opisowego.
** {{lru|Szablony/Ogólne}}, {{lru|Szablony/Informacje}}, {{lru|Szablony/PrzypisStrona}}, {{lru|Szablony/Podręcznikowe}}, {{lru|Szablony/Książkowe}}, {{lru|Szablony/Tekst}}, {{lru|Szablony/Zawartość}}, {{lru|Szablony/Nagłówki}}, {{lru|Szablony/Przekierowania}}, {{lru|Szablony/Języki}}, {{lru|Szablony/Liczby}}, {{lru|Szablony/Kategorie}}, {{lru|Szablony/Opisy}}, {{lru|Szablony/Znaczniki}}, {{lru|Szablony/Szablony opływania}}, {{lru|Szablony/Stronicowe}}, {{lru|Szablony/Kontenerowe}}, {{lru|Szablony/Elastyczne}}, {{lr|Szablony/Infoboksy/Prolog|Infoboksy - Prolog}}, {{lr|Szablony/Infoboksy/Tom I|Infoboksy - Tom I}}, {{lr|Szablony/Infoboksy/Tom II|Infoboksy - Tom II}}, {{lr|Szablony/Infoboksy/Tom III|Infoboksy - Tom III}}, {{lr|Szablony/Infoboksy/Tom IV|Infoboksy - Tom IV}}, {{lr|Szablony/Infoboksy/Tom V|Infoboksy - Tom V}}, {{lr|Szablony/Infoboksy/Tom VI|Infoboksy - Tom VI}}, {{lr|Szablony/Infoboksy/Komponenty|Infoboksy - Komponenty}}, {{lr|Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe)}}, {{lru|Szablony/Porządkowe}}, {{lru|Szablony/Źródła artykułów}}, {{lru|Szablony/Linki}}, {{lru|Szablony/Linki inteligentne}}, {{lru|Szablony/Do usunięcia}}, {{lru|Szablony/Nawigacja}}, {{lru|Szablony/Media}}, {{lru|Szablony/Grafika}}, {{lru|Szablony/Licencjonowanie}}, {{lru|Szablony/Techniczne}}, {{lru|Szablony/Wikipedysta}}, {{lru|Szablony/Dyskusja Wikipedysty}}, {{lru|Szablony/MediaWiki}} i {{lru|Szablony/Systemowe}}.
=== Opis tekstowy ===
* {{lp|Spis treści}} - spis treści pomocy, nie tylko szablonów, czy modułów.
** {{lp|Spis treści/Szablony/Tom I|Szablony - Tom I}}, {{lp|Spis treści/Szablony/Tom II|Szablony - Tom II}}, {{lp|Spis treści/Szablony/Tom III|Szablony - Tom III}} i {{lp|Spis treści/Szablony/Tom IV|Szablony - Tom IV}}.
== Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
{{Osobny artykuł|{{Ns:Project}}:Moduły|obserwowane=Moduły}}
* Moduły podstawowe
** {{m|Parametry}} ({{lru|Moduły/Parametry}}), {{m|Html}} ({{lru|Moduły/Html}}), {{m|Nazwy}} ({{lru|Moduły/Nazwy}}), {{m|Książkowe}} ({{lru|Moduły/Książkowe}}), {{m|Pudełko}} ({{lru|Moduły/Pudełko}}), {{m|Ramka}} ({{lru|Moduły/Ramka}}), {{m|Specjalne}} ({{lru|Moduły/Specjalne}}), ({{lru|Moduły/StronicowyParser}}), {{m|Szeregi}} ({{lru|Moduły/Szeregi}}), {{m|Szablonowe}} ({{lru|Moduły/Szablonowe}}), {{m|Techniczne}} ({{lru|Moduły/Techniczne}}), {{m|Wiki}} ({{lru|Moduły/Wiki}}).
* Moduły standardowe
** {{m|Kategorie}} ({{lru|Moduły/Kategorie}}), {{m|Linki}} ({{lru|Moduły/Linki}}), {{m|Łatki}} ({{lru|Moduły/Łatki}}), {{m|Skrót}} ({{lru|Moduły/Skrót}}), {{m|Sprawdź}} ({{lru|Moduły/Sprawdź}}).
* Specjalistyczne
** {{m|Tabela}} ({{lru|Moduły/Tabela}}), {{m|Sekcja referencyjna}} ({{lru|Moduły/Sekcja referencyjna}}), {{m|Licencja}} ({{lru|Moduły/Licencja}}), {{m|Przypisy}} ({{lru|Moduły/Przypisy}}), {{m|Dopracować}} ({{lru|Moduły/Dopracować}}) procedur wyświetlania okienka {{s|mbox}}.
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategoria|Pomoc - Problemy wywołań mechanizmu MediaWiki|sortuj spacją=tak}}<!--
--></noinclude>
4w04fmu8g72durou2tipgl4iij9ec2a
553071
553070
2026-08-24T01:41:34Z
Persino
2851
/* Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} */
553071
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Wstęp}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
Przedstawimy tutaj problemy z mechanizmem MediaWiki, poczynając od opisu szablonów i modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w zastosowaniach również do wikikodu, na polskim {{NS|pk=mj|w=tak|l=tak}}.
== Szablony ==
Przedstawiamy tutaj w dwóch formach opis wszystkich szablonów, dostępnych na polskim {{NS|p=mj|l=tak}}, w postaci listy.
=== Opis wizualny ===
* {{lr|Szablony}} - strona główna zbioru wszystkich szablonów, opisu ich, wizualnego i opisowego.
** {{lru|Szablony/Ogólne}}, {{lru|Szablony/Informacje}}, {{lru|Szablony/PrzypisStrona}}, {{lru|Szablony/Podręcznikowe}}, {{lru|Szablony/Książkowe}}, {{lru|Szablony/Tekst}}, {{lru|Szablony/Zawartość}}, {{lru|Szablony/Nagłówki}}, {{lru|Szablony/Przekierowania}}, {{lru|Szablony/Języki}}, {{lru|Szablony/Liczby}}, {{lru|Szablony/Kategorie}}, {{lru|Szablony/Opisy}}, {{lru|Szablony/Znaczniki}}, {{lru|Szablony/Szablony opływania}}, {{lru|Szablony/Stronicowe}}, {{lru|Szablony/Kontenerowe}}, {{lru|Szablony/Elastyczne}}, {{lr|Szablony/Infoboksy/Prolog|Infoboksy - Prolog}}, {{lr|Szablony/Infoboksy/Tom I|Infoboksy - Tom I}}, {{lr|Szablony/Infoboksy/Tom II|Infoboksy - Tom II}}, {{lr|Szablony/Infoboksy/Tom III|Infoboksy - Tom III}}, {{lr|Szablony/Infoboksy/Tom IV|Infoboksy - Tom IV}}, {{lr|Szablony/Infoboksy/Tom V|Infoboksy - Tom V}}, {{lr|Szablony/Infoboksy/Tom VI|Infoboksy - Tom VI}}, {{lr|Szablony/Infoboksy/Komponenty|Infoboksy - Komponenty}}, {{lr|Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe)}}, {{lru|Szablony/Porządkowe}}, {{lru|Szablony/Źródła artykułów}}, {{lru|Szablony/Linki}}, {{lru|Szablony/Linki inteligentne}}, {{lru|Szablony/Do usunięcia}}, {{lru|Szablony/Nawigacja}}, {{lru|Szablony/Media}}, {{lru|Szablony/Grafika}}, {{lru|Szablony/Licencjonowanie}}, {{lru|Szablony/Techniczne}}, {{lru|Szablony/Wikipedysta}}, {{lru|Szablony/Dyskusja Wikipedysty}}, {{lru|Szablony/MediaWiki}} i {{lru|Szablony/Systemowe}}.
=== Opis tekstowy ===
* {{lp|Spis treści}} - spis treści pomocy, nie tylko szablonów, czy modułów.
** {{lp|Spis treści/Szablony/Tom I|Szablony - Tom I}}, {{lp|Spis treści/Szablony/Tom II|Szablony - Tom II}}, {{lp|Spis treści/Szablony/Tom III|Szablony - Tom III}} i {{lp|Spis treści/Szablony/Tom IV|Szablony - Tom IV}}.
== Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
{{Osobny artykuł|{{Ns:Project}}:Moduły|obserwowane=Moduły}}
* Moduły podstawowe
** {{m|Parametry}} ({{lru|Moduły/Parametry}}), {{m|Html}} ({{lru|Moduły/Html}}), {{m|Nazwy}} ({{lru|Moduły/Nazwy}}), {{m|Książkowe}} ({{lru|Moduły/Książkowe}}), {{m|Pudełko}} ({{lru|Moduły/Pudełko}}), {{m|Ramka}} ({{lru|Moduły/Ramka}}), {{m|Specjalne}} ({{lru|Moduły/Specjalne}}), {{m|StronicowyParser}} ({{lru|Moduły/StronicowyParser}}), {{m|Szeregi}} ({{lru|Moduły/Szeregi}}), {{m|Szablonowe}} ({{lru|Moduły/Szablonowe}}), {{m|Techniczne}} ({{lru|Moduły/Techniczne}}), {{m|Wiki}} ({{lru|Moduły/Wiki}}).
* Moduły standardowe
** {{m|Kategorie}} ({{lru|Moduły/Kategorie}}), {{m|Linki}} ({{lru|Moduły/Linki}}), {{m|Łatki}} ({{lru|Moduły/Łatki}}), {{m|Skrót}} ({{lru|Moduły/Skrót}}), {{m|Sprawdź}} ({{lru|Moduły/Sprawdź}}).
* Specjalistyczne
** {{m|Tabela}} ({{lru|Moduły/Tabela}}), {{m|Sekcja referencyjna}} ({{lru|Moduły/Sekcja referencyjna}}), {{m|Licencja}} ({{lru|Moduły/Licencja}}), {{m|Przypisy}} ({{lru|Moduły/Przypisy}}), {{m|Dopracować}} ({{lru|Moduły/Dopracować}}) procedur wyświetlania okienka {{s|mbox}}.
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategoria|Pomoc - Problemy wywołań mechanizmu MediaWiki|sortuj spacją=tak}}<!--
--></noinclude>
sy8estnntsr2nh1ebt442ku3q753p6a
553072
553071
2026-08-24T01:42:27Z
Persino
2851
/* Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} */
553072
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Wstęp}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
Przedstawimy tutaj problemy z mechanizmem MediaWiki, poczynając od opisu szablonów i modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w zastosowaniach również do wikikodu, na polskim {{NS|pk=mj|w=tak|l=tak}}.
== Szablony ==
Przedstawiamy tutaj w dwóch formach opis wszystkich szablonów, dostępnych na polskim {{NS|p=mj|l=tak}}, w postaci listy.
=== Opis wizualny ===
* {{lr|Szablony}} - strona główna zbioru wszystkich szablonów, opisu ich, wizualnego i opisowego.
** {{lru|Szablony/Ogólne}}, {{lru|Szablony/Informacje}}, {{lru|Szablony/PrzypisStrona}}, {{lru|Szablony/Podręcznikowe}}, {{lru|Szablony/Książkowe}}, {{lru|Szablony/Tekst}}, {{lru|Szablony/Zawartość}}, {{lru|Szablony/Nagłówki}}, {{lru|Szablony/Przekierowania}}, {{lru|Szablony/Języki}}, {{lru|Szablony/Liczby}}, {{lru|Szablony/Kategorie}}, {{lru|Szablony/Opisy}}, {{lru|Szablony/Znaczniki}}, {{lru|Szablony/Szablony opływania}}, {{lru|Szablony/Stronicowe}}, {{lru|Szablony/Kontenerowe}}, {{lru|Szablony/Elastyczne}}, {{lr|Szablony/Infoboksy/Prolog|Infoboksy - Prolog}}, {{lr|Szablony/Infoboksy/Tom I|Infoboksy - Tom I}}, {{lr|Szablony/Infoboksy/Tom II|Infoboksy - Tom II}}, {{lr|Szablony/Infoboksy/Tom III|Infoboksy - Tom III}}, {{lr|Szablony/Infoboksy/Tom IV|Infoboksy - Tom IV}}, {{lr|Szablony/Infoboksy/Tom V|Infoboksy - Tom V}}, {{lr|Szablony/Infoboksy/Tom VI|Infoboksy - Tom VI}}, {{lr|Szablony/Infoboksy/Komponenty|Infoboksy - Komponenty}}, {{lr|Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe)}}, {{lru|Szablony/Porządkowe}}, {{lru|Szablony/Źródła artykułów}}, {{lru|Szablony/Linki}}, {{lru|Szablony/Linki inteligentne}}, {{lru|Szablony/Do usunięcia}}, {{lru|Szablony/Nawigacja}}, {{lru|Szablony/Media}}, {{lru|Szablony/Grafika}}, {{lru|Szablony/Licencjonowanie}}, {{lru|Szablony/Techniczne}}, {{lru|Szablony/Wikipedysta}}, {{lru|Szablony/Dyskusja Wikipedysty}}, {{lru|Szablony/MediaWiki}} i {{lru|Szablony/Systemowe}}.
=== Opis tekstowy ===
* {{lp|Spis treści}} - spis treści pomocy, nie tylko szablonów, czy modułów.
** {{lp|Spis treści/Szablony/Tom I|Szablony - Tom I}}, {{lp|Spis treści/Szablony/Tom II|Szablony - Tom II}}, {{lp|Spis treści/Szablony/Tom III|Szablony - Tom III}} i {{lp|Spis treści/Szablony/Tom IV|Szablony - Tom IV}}.
== Moduły {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
{{Osobny artykuł|{{Ns:Project}}:Moduły|obserwowane=Moduły}}
* Moduły podstawowe
** {{m|Parametry}} ({{lru|Moduły/Parametry}}), {{m|Html}} ({{lru|Moduły/Html}}), {{m|Nazwy}} ({{lru|Moduły/Nazwy}}), {{m|Książkowe}} ({{lru|Moduły/Książkowe}}), {{m|Pudełko}} ({{lru|Moduły/Pudełko}}), {{m|Ramka}} ({{lru|Moduły/Ramka}}), {{m|Specjalne}} ({{lru|Moduły/Specjalne}}), {{m|StronicowyParser}} ({{lru|Moduły/StronicowyParser}}), {{m|Szeregi}} ({{lru|Moduły/Szeregi}}), {{m|Szablonowe}} ({{lru|Moduły/Szablonowe}}), {{m|Techniczne}} ({{lru|Moduły/Techniczne}}), {{m|Wiki}} ({{lru|Moduły/Wiki}}).
* Moduły standardowe
** {{m|Kategorie}} ({{lru|Moduły/Kategorie}}), {{m|Linki}} ({{lru|Moduły/Linki}}), {{m|Łatki}} ({{lru|Moduły/Łatki}}), {{m|Skrót}} ({{lru|Moduły/Skrót}}), {{m|Sprawdź}} ({{lru|Moduły/Sprawdź}}).
* Specjalistyczne
** {{m|Tabela}} ({{lru|Moduły/Tabela}}), {{m|Sekcja referencyjna}} ({{lru|Moduły/Sekcja referencyjna}}), {{m|Licencja}} ({{lru|Moduły/Licencja}}), {{m|Przypisy}} ({{lru|Moduły/Przypisy}}), {{m|Dopracować}} ({{lru|Moduły/Dopracować}}).
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategoria|Pomoc - Problemy wywołań mechanizmu MediaWiki|sortuj spacją=tak}}<!--
--></noinclude>
rqibm4dywto70tocoble1cm32qyocf2
Wikibooks:Moduły
4
60758
553053
548057
2026-08-24T00:24:27Z
Persino
2851
553053
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona przedstawia technologię modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a właściwie spis poszczególnych rozdziałów. Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
== Moduły podstawowe ==
{{Tabela nawigacyjna
| styl = width:100%;margin-left:0;margin-right:0;
| tytuł = Spis treści poszczególnych opisów modułów - Moduły podstawowe
| spis =
{{Kolumny|2|
{{SpisTreści|Parametry|poziom=3}}
{{SpisTreści|Html|poziom=3}}
{{SpisTreści|Książkowe|poziom=3}}
{{SpisTreści|Nazwy|poziom=3}}
{{SpisTreści|Nazwy/Tom I|3=Nazwy - Tom I|poziom=4}}
{{SpisTreści|Nazwy/Tom II|3=Nazwy - Tom II|poziom=4}}
{{SpisTreści|Nazwy/Tom III|3=Nazwy - Tom III|poziom=4}}
{{SpisTreści|Nazwy/Tom IV|3=Nazwy - Tom IV|poziom=4}}
{{SpisTreści|Nazwy/Np|poziom=4}}
{{SpisTreści|Pudełko|poziom=3}}
{{SpisTreści|Pudełko/Tom I|nazwa=Pudełko - Tom I|poziom=4}}
{{SpisTreści|Pudełko/Tom II|nazwa=Pudełko - Tom II|poziom=4}}
{{SpisTreści|Pudełko/Tom III|nazwa=Pudełko - Tom III|poziom=4}}
{{SpisTreści|Pudełko/Tom IV|nazwa=Pudełko - Tom IV|poziom=4}}
{{SpisTreści|Pudełko/Tom V|nazwa=Pudełko - Tom V|poziom=4}}
{{SpisTreści|Pudełko/Pomocne|nazwa=Pudełko - Pomocne|poziom=4}}
{{SpisTreści|Pudełko/Potrzebne|nazwa=Pudełko - Potrzebne|poziom=4}}
{{SpisTreści|Pudełko/ParametryCechy|nazwa=Pudełko - Parametry Cechy|poziom=4}}
{{SpisTreści|Ramka|poziom=3}}
{{SpisTreści|Specjalne|poziom=3}}
{{SpisTreści|StronicowyParser|poziom=3}}
{{SpisTreści|StronicowyParser/Tom I|poziom=4}}
{{SpisTreści|StronicowyParser/AnalizaSpisuRzeczy|nazwa=AnalizaSpisuRzeczy|poziom=4}}
{{SpisTreści|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|nazwa=GłównaFunkcjaZbieraniaDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/Kategorie|nazwa=Kategorie|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaArtykułówKsiążek|nazwa=NumerLubNazwaArtykułówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaNagłówkówKsiążek|nazwa=NumerLubNazwaNagłówkówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerObiektu|nazwa=NumerObiektu|poziom=4}}
{{SpisTreści|StronicowyParser/NumeracjaObiektówStron|nazwa=NumeracjaObiektówStron|poziom=4}}
{{SpisTreści|StronicowyParser/Potrzebne|nazwa=Potrzebne|poziom=4}}
{{SpisTreści|StronicowyParser/Problemy|nazwa=Problemy|poziom=4}}
{{SpisTreści|StronicowyParser/Rozdziały|nazwa=Rozdziały|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści|nazwa=SpisTreści|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom I|nazwa=SpisTreści - Tom I|poziom=5}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom II|nazwa=SpisTreści - Tom II|poziom=5}}
{{SpisTreści|StronicowyParser/StronaSubst|nazwa=StronaSubst|poziom=4}}
{{SpisTreści|StronicowyParser/Tekst|nazwa=Tekst|poziom=4}}
{{SpisTreści|StronicowyParser/ZbieranieDanychStron|nazwa=ZbieranieDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/SzablonyTekstu|nazwa=SzablonyTekstu|poziom=4}}
{{SpisTreści|StronicowyParser/informacje|nazwa=informacje|poziom=4}}
{{SpisTreści|StronicowyParser/obiekty|nazwa=obiekty|poziom=4}}
{{SpisTreści|Szeregi|poziom=3}}
{{SpisTreści|Szablonowe|poziom=3}}
{{SpisTreści|Techniczne|poziom=3}}
{{SpisTreści|Wiki|poziom=3}}
}}}}
== Moduły standardowe ==
{{Tabela nawigacyjna
| styl = width:100%;margin-left:0;margin-right:0;
| tytuł = Spis treści poszczególnych opisów modułów - Moduły standardowe
| spis =
{{Kolumny|2|
{{SpisTreści|Kategorie|poziom=3}}
{{SpisTreści|Linki|poziom=3}}
{{SpisTreści|Łatki|poziom=3}}
{{SpisTreści|Skrót|poziom=3}}
{{SpisTreści|Strony|poziom=3}}
{{SpisTreści|Sprawdź|poziom=3}}
}}}}
== Moduły specjalistyczne ==
{{Tabela nawigacyjna
| styl = width:100%;margin-left:0;margin-right:0;
| tytuł = Spis treści poszczególnych opisów modułów - Moduły specjalistyczne
| spis =
{{Kolumny|2|
{{SpisTreści|Tabela|poziom=3}}
{{SpisTreści|Sekcja referencyjna|poziom=3}}
{{SpisTreści|Plik|poziom=3}}
{{SpisTreści|Licencja|poziom=3}}
{{SpisTreści|Przypisy|poziom=3}}
{{SpisTreści|Dopracować|poziom=3}}
}}}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
holsota1rmy8o42praunbrpi0di61uy
553059
553053
2026-08-24T01:02:29Z
Persino
2851
553059
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona przedstawia technologię modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a właściwie spis poszczególnych rozdziałów. Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
== Moduły podstawowe ==
{{Tabela nawigacyjna
| styl = width:100%;margin-left:0;margin-right:0;
| tytuł = Spis treści poszczególnych opisów modułów - Moduły podstawowe
| spis =
{{SpisTreści|Parametry|poziom=3}}
{{SpisTreści|Html|poziom=3}}
{{SpisTreści|Książkowe|poziom=3}}
{{SpisTreści|Nazwy|poziom=3}}
{{SpisTreści|Nazwy/Tom I|3=Nazwy - Tom I|poziom=4}}
{{SpisTreści|Nazwy/Tom II|3=Nazwy - Tom II|poziom=4}}
{{SpisTreści|Nazwy/Tom III|3=Nazwy - Tom III|poziom=4}}
{{SpisTreści|Nazwy/Tom IV|3=Nazwy - Tom IV|poziom=4}}
{{SpisTreści|Nazwy/Np|poziom=4}}
{{SpisTreści|Pudełko|poziom=3}}
{{SpisTreści|Pudełko/Tom I|nazwa=Pudełko - Tom I|poziom=4}}
{{SpisTreści|Pudełko/Tom II|nazwa=Pudełko - Tom II|poziom=4}}
{{SpisTreści|Pudełko/Tom III|nazwa=Pudełko - Tom III|poziom=4}}
{{SpisTreści|Pudełko/Tom IV|nazwa=Pudełko - Tom IV|poziom=4}}
{{SpisTreści|Pudełko/Tom V|nazwa=Pudełko - Tom V|poziom=4}}
{{SpisTreści|Pudełko/Pomocne|nazwa=Pudełko - Pomocne|poziom=4}}
{{SpisTreści|Pudełko/Potrzebne|nazwa=Pudełko - Potrzebne|poziom=4}}
{{SpisTreści|Pudełko/ParametryCechy|nazwa=Pudełko - Parametry Cechy|poziom=4}}
{{SpisTreści|Ramka|poziom=3}}
{{SpisTreści|Specjalne|poziom=3}}
{{SpisTreści|StronicowyParser|poziom=3}}
{{SpisTreści|StronicowyParser/Tom I|poziom=4}}
{{SpisTreści|StronicowyParser/AnalizaSpisuRzeczy|nazwa=AnalizaSpisuRzeczy|poziom=4}}
{{SpisTreści|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|nazwa=GłównaFunkcjaZbieraniaDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/Kategorie|nazwa=Kategorie|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaArtykułówKsiążek|nazwa=NumerLubNazwaArtykułówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaNagłówkówKsiążek|nazwa=NumerLubNazwaNagłówkówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerObiektu|nazwa=NumerObiektu|poziom=4}}
{{SpisTreści|StronicowyParser/NumeracjaObiektówStron|nazwa=NumeracjaObiektówStron|poziom=4}}
{{SpisTreści|StronicowyParser/Potrzebne|nazwa=Potrzebne|poziom=4}}
{{SpisTreści|StronicowyParser/Problemy|nazwa=Problemy|poziom=4}}
{{SpisTreści|StronicowyParser/Rozdziały|nazwa=Rozdziały|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści|nazwa=SpisTreści|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom I|nazwa=SpisTreści - Tom I|poziom=5}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom II|nazwa=SpisTreści - Tom II|poziom=5}}
{{SpisTreści|StronicowyParser/StronaSubst|nazwa=StronaSubst|poziom=4}}
{{SpisTreści|StronicowyParser/Tekst|nazwa=Tekst|poziom=4}}
{{SpisTreści|StronicowyParser/ZbieranieDanychStron|nazwa=ZbieranieDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/SzablonyTekstu|nazwa=SzablonyTekstu|poziom=4}}
{{SpisTreści|StronicowyParser/informacje|nazwa=informacje|poziom=4}}
{{SpisTreści|StronicowyParser/obiekty|nazwa=obiekty|poziom=4}}
{{SpisTreści|Szeregi|poziom=3}}
{{SpisTreści|Szablonowe|poziom=3}}
{{SpisTreści|Techniczne|poziom=3}}
{{SpisTreści|Wiki|poziom=3}}
}}
== Moduły standardowe ==
{{Tabela nawigacyjna
| styl = width:100%;margin-left:0;margin-right:0;
| tytuł = Spis treści poszczególnych opisów modułów - Moduły standardowe
| spis =
{{SpisTreści|Kategorie|poziom=3}}
{{SpisTreści|Linki|poziom=3}}
{{SpisTreści|Łatki|poziom=3}}
{{SpisTreści|Skrót|poziom=3}}
{{SpisTreści|Strony|poziom=3}}
{{SpisTreści|Sprawdź|poziom=3}}
}}
== Moduły specjalistyczne ==
{{Tabela nawigacyjna
| styl = width:100%;margin-left:0;margin-right:0;
| tytuł = Spis treści poszczególnych opisów modułów - Moduły specjalistyczne
| spis =
{{SpisTreści|Tabela|poziom=3}}
{{SpisTreści|Sekcja referencyjna|poziom=3}}
{{SpisTreści|Plik|poziom=3}}
{{SpisTreści|Licencja|poziom=3}}
{{SpisTreści|Przypisy|poziom=3}}
{{SpisTreści|Dopracować|poziom=3}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
27vfyb9gdgwj51g7x22g3vgipjm4y6z
553067
553059
2026-08-24T01:22:17Z
Persino
2851
553067
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona przedstawia technologię modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a właściwie spis poszczególnych rozdziałów. Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
== Moduły podstawowe ==
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły podstawowe
| spis =
{{SpisTreści|Parametry|poziom=3}}
{{SpisTreści|Html|poziom=3}}
{{SpisTreści|Książkowe|poziom=3}}
{{SpisTreści|Nazwy|poziom=3}}
{{SpisTreści|Nazwy/Tom I|3=Nazwy - Tom I|poziom=4}}
{{SpisTreści|Nazwy/Tom II|3=Nazwy - Tom II|poziom=4}}
{{SpisTreści|Nazwy/Tom III|3=Nazwy - Tom III|poziom=4}}
{{SpisTreści|Nazwy/Tom IV|3=Nazwy - Tom IV|poziom=4}}
{{SpisTreści|Nazwy/Np|poziom=4}}
{{SpisTreści|Pudełko|poziom=3}}
{{SpisTreści|Pudełko/Tom I|nazwa=Pudełko - Tom I|poziom=4}}
{{SpisTreści|Pudełko/Tom II|nazwa=Pudełko - Tom II|poziom=4}}
{{SpisTreści|Pudełko/Tom III|nazwa=Pudełko - Tom III|poziom=4}}
{{SpisTreści|Pudełko/Tom IV|nazwa=Pudełko - Tom IV|poziom=4}}
{{SpisTreści|Pudełko/Tom V|nazwa=Pudełko - Tom V|poziom=4}}
{{SpisTreści|Pudełko/Pomocne|nazwa=Pudełko - Pomocne|poziom=4}}
{{SpisTreści|Pudełko/Potrzebne|nazwa=Pudełko - Potrzebne|poziom=4}}
{{SpisTreści|Pudełko/ParametryCechy|nazwa=Pudełko - Parametry Cechy|poziom=4}}
{{SpisTreści|Ramka|poziom=3}}
{{SpisTreści|Specjalne|poziom=3}}
{{SpisTreści|StronicowyParser|poziom=3}}
{{SpisTreści|StronicowyParser/Tom I|poziom=4}}
{{SpisTreści|StronicowyParser/AnalizaSpisuRzeczy|nazwa=AnalizaSpisuRzeczy|poziom=4}}
{{SpisTreści|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|nazwa=GłównaFunkcjaZbieraniaDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/Kategorie|nazwa=Kategorie|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaArtykułówKsiążek|nazwa=NumerLubNazwaArtykułówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaNagłówkówKsiążek|nazwa=NumerLubNazwaNagłówkówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerObiektu|nazwa=NumerObiektu|poziom=4}}
{{SpisTreści|StronicowyParser/NumeracjaObiektówStron|nazwa=NumeracjaObiektówStron|poziom=4}}
{{SpisTreści|StronicowyParser/Potrzebne|nazwa=Potrzebne|poziom=4}}
{{SpisTreści|StronicowyParser/Problemy|nazwa=Problemy|poziom=4}}
{{SpisTreści|StronicowyParser/Rozdziały|nazwa=Rozdziały|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści|nazwa=SpisTreści|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom I|nazwa=SpisTreści - Tom I|poziom=5}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom II|nazwa=SpisTreści - Tom II|poziom=5}}
{{SpisTreści|StronicowyParser/StronaSubst|nazwa=StronaSubst|poziom=4}}
{{SpisTreści|StronicowyParser/Tekst|nazwa=Tekst|poziom=4}}
{{SpisTreści|StronicowyParser/ZbieranieDanychStron|nazwa=ZbieranieDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/SzablonyTekstu|nazwa=SzablonyTekstu|poziom=4}}
{{SpisTreści|StronicowyParser/informacje|nazwa=informacje|poziom=4}}
{{SpisTreści|StronicowyParser/obiekty|nazwa=obiekty|poziom=4}}
{{SpisTreści|Szeregi|poziom=3}}
{{SpisTreści|Szablonowe|poziom=3}}
{{SpisTreści|Techniczne|poziom=3}}
{{SpisTreści|Wiki|poziom=3}}
}}
== Moduły standardowe ==
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły standardowe
| spis =
{{SpisTreści|Kategorie|poziom=3}}
{{SpisTreści|Linki|poziom=3}}
{{SpisTreści|Łatki|poziom=3}}
{{SpisTreści|Skrót|poziom=3}}
{{SpisTreści|Strony|poziom=3}}
{{SpisTreści|Sprawdź|poziom=3}}
}}
== Moduły specjalistyczne ==
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły specjalistyczne
| spis =
{{SpisTreści|Tabela|poziom=3}}
{{SpisTreści|Sekcja referencyjna|poziom=3}}
{{SpisTreści|Plik|poziom=3}}
{{SpisTreści|Licencja|poziom=3}}
{{SpisTreści|Przypisy|poziom=3}}
{{SpisTreści|Dopracować|poziom=3}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
px576ayr91sb6tq4nk8tfv84dvowfhx
553068
553067
2026-08-24T01:28:27Z
Persino
2851
553068
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona przedstawia technologię modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a właściwie spis poszczególnych rozdziałów. Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
== Moduły - rodzaje ==
=== Moduły podstawowe ===
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły podstawowe
| spis =
{{SpisTreści|Parametry|poziom=3}}
{{SpisTreści|Html|poziom=3}}
{{SpisTreści|Książkowe|poziom=3}}
{{SpisTreści|Nazwy|poziom=3}}
{{SpisTreści|Nazwy/Tom I|3=Nazwy - Tom I|poziom=4}}
{{SpisTreści|Nazwy/Tom II|3=Nazwy - Tom II|poziom=4}}
{{SpisTreści|Nazwy/Tom III|3=Nazwy - Tom III|poziom=4}}
{{SpisTreści|Nazwy/Tom IV|3=Nazwy - Tom IV|poziom=4}}
{{SpisTreści|Nazwy/Np|poziom=4}}
{{SpisTreści|Pudełko|poziom=3}}
{{SpisTreści|Pudełko/Tom I|nazwa=Pudełko - Tom I|poziom=4}}
{{SpisTreści|Pudełko/Tom II|nazwa=Pudełko - Tom II|poziom=4}}
{{SpisTreści|Pudełko/Tom III|nazwa=Pudełko - Tom III|poziom=4}}
{{SpisTreści|Pudełko/Tom IV|nazwa=Pudełko - Tom IV|poziom=4}}
{{SpisTreści|Pudełko/Tom V|nazwa=Pudełko - Tom V|poziom=4}}
{{SpisTreści|Pudełko/Pomocne|nazwa=Pudełko - Pomocne|poziom=4}}
{{SpisTreści|Pudełko/Potrzebne|nazwa=Pudełko - Potrzebne|poziom=4}}
{{SpisTreści|Pudełko/ParametryCechy|nazwa=Pudełko - Parametry Cechy|poziom=4}}
{{SpisTreści|Ramka|poziom=3}}
{{SpisTreści|Specjalne|poziom=3}}
{{SpisTreści|StronicowyParser|poziom=3}}
{{SpisTreści|StronicowyParser/Tom I|poziom=4}}
{{SpisTreści|StronicowyParser/AnalizaSpisuRzeczy|nazwa=AnalizaSpisuRzeczy|poziom=4}}
{{SpisTreści|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|nazwa=GłównaFunkcjaZbieraniaDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/Kategorie|nazwa=Kategorie|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaArtykułówKsiążek|nazwa=NumerLubNazwaArtykułówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaNagłówkówKsiążek|nazwa=NumerLubNazwaNagłówkówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerObiektu|nazwa=NumerObiektu|poziom=4}}
{{SpisTreści|StronicowyParser/NumeracjaObiektówStron|nazwa=NumeracjaObiektówStron|poziom=4}}
{{SpisTreści|StronicowyParser/Potrzebne|nazwa=Potrzebne|poziom=4}}
{{SpisTreści|StronicowyParser/Problemy|nazwa=Problemy|poziom=4}}
{{SpisTreści|StronicowyParser/Rozdziały|nazwa=Rozdziały|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści|nazwa=SpisTreści|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom I|nazwa=SpisTreści - Tom I|poziom=5}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom II|nazwa=SpisTreści - Tom II|poziom=5}}
{{SpisTreści|StronicowyParser/StronaSubst|nazwa=StronaSubst|poziom=4}}
{{SpisTreści|StronicowyParser/Tekst|nazwa=Tekst|poziom=4}}
{{SpisTreści|StronicowyParser/ZbieranieDanychStron|nazwa=ZbieranieDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/SzablonyTekstu|nazwa=SzablonyTekstu|poziom=4}}
{{SpisTreści|StronicowyParser/informacje|nazwa=informacje|poziom=4}}
{{SpisTreści|StronicowyParser/obiekty|nazwa=obiekty|poziom=4}}
{{SpisTreści|Szeregi|poziom=3}}
{{SpisTreści|Szablonowe|poziom=3}}
{{SpisTreści|Techniczne|poziom=3}}
{{SpisTreści|Wiki|poziom=3}}
}}
=== Moduły standardowe ===
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły standardowe
| spis =
{{SpisTreści|Kategorie|poziom=3}}
{{SpisTreści|Linki|poziom=3}}
{{SpisTreści|Łatki|poziom=3}}
{{SpisTreści|Skrót|poziom=3}}
{{SpisTreści|Strony|poziom=3}}
{{SpisTreści|Sprawdź|poziom=3}}
}}
=== Moduły specjalistyczne ===
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły specjalistyczne
| spis =
{{SpisTreści|Tabela|poziom=3}}
{{SpisTreści|Sekcja referencyjna|poziom=3}}
{{SpisTreści|Plik|poziom=3}}
{{SpisTreści|Licencja|poziom=3}}
{{SpisTreści|Przypisy|poziom=3}}
{{SpisTreści|Dopracować|poziom=3}}
}}
== Spis treści ==
{{Osobny artykuł|{{Ns:Project}}:Moduły|obserwowane=Moduły}}
Opisy modułówi ich funkcji;
* Moduły podstawowe
** {{lru|Moduły/Parametry}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
** {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
** {{lru|Moduły/Nazwy}} - operujących na nazwach MediaWiki projektu.
** {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
** {{lru|Moduły/Pudełko}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
** {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
** {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
** {{lru|Moduły/StronicowyParser}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
** {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
** {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
** {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
** {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
* Moduły standardowe
** {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
** {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
** {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
** {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
** {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* Specjalistyczne
** {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
** {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
** {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
** {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
** {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
rpua13sdw85nxudkifb169inybvlw24
553069
553068
2026-08-24T01:30:59Z
Persino
2851
/* Spis treści */
553069
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona przedstawia technologię modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a właściwie spis poszczególnych rozdziałów. Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
== Moduły - rodzaje ==
=== Moduły podstawowe ===
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły podstawowe
| spis =
{{SpisTreści|Parametry|poziom=3}}
{{SpisTreści|Html|poziom=3}}
{{SpisTreści|Książkowe|poziom=3}}
{{SpisTreści|Nazwy|poziom=3}}
{{SpisTreści|Nazwy/Tom I|3=Nazwy - Tom I|poziom=4}}
{{SpisTreści|Nazwy/Tom II|3=Nazwy - Tom II|poziom=4}}
{{SpisTreści|Nazwy/Tom III|3=Nazwy - Tom III|poziom=4}}
{{SpisTreści|Nazwy/Tom IV|3=Nazwy - Tom IV|poziom=4}}
{{SpisTreści|Nazwy/Np|poziom=4}}
{{SpisTreści|Pudełko|poziom=3}}
{{SpisTreści|Pudełko/Tom I|nazwa=Pudełko - Tom I|poziom=4}}
{{SpisTreści|Pudełko/Tom II|nazwa=Pudełko - Tom II|poziom=4}}
{{SpisTreści|Pudełko/Tom III|nazwa=Pudełko - Tom III|poziom=4}}
{{SpisTreści|Pudełko/Tom IV|nazwa=Pudełko - Tom IV|poziom=4}}
{{SpisTreści|Pudełko/Tom V|nazwa=Pudełko - Tom V|poziom=4}}
{{SpisTreści|Pudełko/Pomocne|nazwa=Pudełko - Pomocne|poziom=4}}
{{SpisTreści|Pudełko/Potrzebne|nazwa=Pudełko - Potrzebne|poziom=4}}
{{SpisTreści|Pudełko/ParametryCechy|nazwa=Pudełko - Parametry Cechy|poziom=4}}
{{SpisTreści|Ramka|poziom=3}}
{{SpisTreści|Specjalne|poziom=3}}
{{SpisTreści|StronicowyParser|poziom=3}}
{{SpisTreści|StronicowyParser/Tom I|poziom=4}}
{{SpisTreści|StronicowyParser/AnalizaSpisuRzeczy|nazwa=AnalizaSpisuRzeczy|poziom=4}}
{{SpisTreści|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|nazwa=GłównaFunkcjaZbieraniaDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/Kategorie|nazwa=Kategorie|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaArtykułówKsiążek|nazwa=NumerLubNazwaArtykułówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaNagłówkówKsiążek|nazwa=NumerLubNazwaNagłówkówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerObiektu|nazwa=NumerObiektu|poziom=4}}
{{SpisTreści|StronicowyParser/NumeracjaObiektówStron|nazwa=NumeracjaObiektówStron|poziom=4}}
{{SpisTreści|StronicowyParser/Potrzebne|nazwa=Potrzebne|poziom=4}}
{{SpisTreści|StronicowyParser/Problemy|nazwa=Problemy|poziom=4}}
{{SpisTreści|StronicowyParser/Rozdziały|nazwa=Rozdziały|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści|nazwa=SpisTreści|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom I|nazwa=SpisTreści - Tom I|poziom=5}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom II|nazwa=SpisTreści - Tom II|poziom=5}}
{{SpisTreści|StronicowyParser/StronaSubst|nazwa=StronaSubst|poziom=4}}
{{SpisTreści|StronicowyParser/Tekst|nazwa=Tekst|poziom=4}}
{{SpisTreści|StronicowyParser/ZbieranieDanychStron|nazwa=ZbieranieDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/SzablonyTekstu|nazwa=SzablonyTekstu|poziom=4}}
{{SpisTreści|StronicowyParser/informacje|nazwa=informacje|poziom=4}}
{{SpisTreści|StronicowyParser/obiekty|nazwa=obiekty|poziom=4}}
{{SpisTreści|Szeregi|poziom=3}}
{{SpisTreści|Szablonowe|poziom=3}}
{{SpisTreści|Techniczne|poziom=3}}
{{SpisTreści|Wiki|poziom=3}}
}}
=== Moduły standardowe ===
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły standardowe
| spis =
{{SpisTreści|Kategorie|poziom=3}}
{{SpisTreści|Linki|poziom=3}}
{{SpisTreści|Łatki|poziom=3}}
{{SpisTreści|Skrót|poziom=3}}
{{SpisTreści|Strony|poziom=3}}
{{SpisTreści|Sprawdź|poziom=3}}
}}
=== Moduły specjalistyczne ===
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły specjalistyczne
| spis =
{{SpisTreści|Tabela|poziom=3}}
{{SpisTreści|Sekcja referencyjna|poziom=3}}
{{SpisTreści|Plik|poziom=3}}
{{SpisTreści|Licencja|poziom=3}}
{{SpisTreści|Przypisy|poziom=3}}
{{SpisTreści|Dopracować|poziom=3}}
}}
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
Opisy modułówi ich funkcji;
* Moduły podstawowe
** {{lru|Moduły/Parametry}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
** {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
** {{lru|Moduły/Nazwy}} - operujących na nazwach MediaWiki projektu.
** {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
** {{lru|Moduły/Pudełko}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
** {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
** {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
** {{lru|Moduły/StronicowyParser}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
** {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
** {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
** {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
** {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
* Moduły standardowe
** {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
** {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
** {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
** {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
** {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* Specjalistyczne
** {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
** {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
** {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
** {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
** {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
qzqq5bj1nem5t7lhpo5thpfhxqzxuvi
553073
553069
2026-08-24T01:44:24Z
Persino
2851
553073
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona przedstawia technologię modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a właściwie spis poszczególnych rozdziałów. Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
Opisy modułówi ich funkcji;
* Moduły podstawowe
** {{lru|Moduły/Parametry}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
** {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
** {{lru|Moduły/Nazwy}} - operujących na nazwach MediaWiki projektu.
** {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
** {{lru|Moduły/Pudełko}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
** {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
** {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
** {{lru|Moduły/StronicowyParser}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
** {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
** {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
** {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
** {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
* Moduły standardowe
** {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
** {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
** {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
** {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
** {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* Specjalistyczne
** {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
** {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
** {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
** {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
** {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
qu31bx0rx9sw3getrj0zvflguoutfxq
553074
553073
2026-08-24T01:47:20Z
Persino
2851
553074
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona przedstawia technologię modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a właściwie spis poszczególnych rozdziałów. Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
== Moduły - rodzaje ==
=== Moduły podstawowe ===
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły podstawowe
| spis =
{{SpisTreści|Parametry|poziom=3}}
{{SpisTreści|Html|poziom=3}}
{{SpisTreści|Książkowe|poziom=3}}
{{SpisTreści|Nazwy|poziom=3}}
{{SpisTreści|Nazwy/Tom I|3=Nazwy - Tom I|poziom=4}}
{{SpisTreści|Nazwy/Tom II|3=Nazwy - Tom II|poziom=4}}
{{SpisTreści|Nazwy/Tom III|3=Nazwy - Tom III|poziom=4}}
{{SpisTreści|Nazwy/Tom IV|3=Nazwy - Tom IV|poziom=4}}
{{SpisTreści|Nazwy/Np|poziom=4}}
{{SpisTreści|Pudełko|poziom=3}}
{{SpisTreści|Pudełko/Tom I|nazwa=Pudełko - Tom I|poziom=4}}
{{SpisTreści|Pudełko/Tom II|nazwa=Pudełko - Tom II|poziom=4}}
{{SpisTreści|Pudełko/Tom III|nazwa=Pudełko - Tom III|poziom=4}}
{{SpisTreści|Pudełko/Tom IV|nazwa=Pudełko - Tom IV|poziom=4}}
{{SpisTreści|Pudełko/Tom V|nazwa=Pudełko - Tom V|poziom=4}}
{{SpisTreści|Pudełko/Pomocne|nazwa=Pudełko - Pomocne|poziom=4}}
{{SpisTreści|Pudełko/Potrzebne|nazwa=Pudełko - Potrzebne|poziom=4}}
{{SpisTreści|Pudełko/ParametryCechy|nazwa=Pudełko - Parametry Cechy|poziom=4}}
{{SpisTreści|Ramka|poziom=3}}
{{SpisTreści|Specjalne|poziom=3}}
{{SpisTreści|StronicowyParser|poziom=3}}
{{SpisTreści|StronicowyParser/Tom I|poziom=4}}
{{SpisTreści|StronicowyParser/AnalizaSpisuRzeczy|nazwa=AnalizaSpisuRzeczy|poziom=4}}
{{SpisTreści|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|nazwa=GłównaFunkcjaZbieraniaDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/Kategorie|nazwa=Kategorie|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaArtykułówKsiążek|nazwa=NumerLubNazwaArtykułówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerLubNazwaNagłówkówKsiążek|nazwa=NumerLubNazwaNagłówkówKsiążek|poziom=4}}
{{SpisTreści|StronicowyParser/NumerObiektu|nazwa=NumerObiektu|poziom=4}}
{{SpisTreści|StronicowyParser/NumeracjaObiektówStron|nazwa=NumeracjaObiektówStron|poziom=4}}
{{SpisTreści|StronicowyParser/Potrzebne|nazwa=Potrzebne|poziom=4}}
{{SpisTreści|StronicowyParser/Problemy|nazwa=Problemy|poziom=4}}
{{SpisTreści|StronicowyParser/Rozdziały|nazwa=Rozdziały|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści|nazwa=SpisTreści|poziom=4}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom I|nazwa=SpisTreści - Tom I|poziom=5}}
{{SpisTreści|StronicowyParser/SpisTreści/Tom II|nazwa=SpisTreści - Tom II|poziom=5}}
{{SpisTreści|StronicowyParser/StronaSubst|nazwa=StronaSubst|poziom=4}}
{{SpisTreści|StronicowyParser/Tekst|nazwa=Tekst|poziom=4}}
{{SpisTreści|StronicowyParser/ZbieranieDanychStron|nazwa=ZbieranieDanychStron|poziom=4}}
{{SpisTreści|StronicowyParser/SzablonyTekstu|nazwa=SzablonyTekstu|poziom=4}}
{{SpisTreści|StronicowyParser/informacje|nazwa=informacje|poziom=4}}
{{SpisTreści|StronicowyParser/obiekty|nazwa=obiekty|poziom=4}}
{{SpisTreści|Szeregi|poziom=3}}
{{SpisTreści|Szablonowe|poziom=3}}
{{SpisTreści|Techniczne|poziom=3}}
{{SpisTreści|Wiki|poziom=3}}
}}
=== Moduły standardowe ===
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły standardowe
| spis =
{{SpisTreści|Kategorie|poziom=3}}
{{SpisTreści|Linki|poziom=3}}
{{SpisTreści|Łatki|poziom=3}}
{{SpisTreści|Skrót|poziom=3}}
{{SpisTreści|Strony|poziom=3}}
{{SpisTreści|Sprawdź|poziom=3}}
}}
=== Moduły specjalistyczne ===
{{Tabela nawigacyjna
| klasa = szerokość
| styl =
| tytuł = Spis treści poszczególnych opisów modułów - Moduły specjalistyczne
| spis =
{{SpisTreści|Tabela|poziom=3}}
{{SpisTreści|Sekcja referencyjna|poziom=3}}
{{SpisTreści|Plik|poziom=3}}
{{SpisTreści|Licencja|poziom=3}}
{{SpisTreści|Przypisy|poziom=3}}
{{SpisTreści|Dopracować|poziom=3}}
}}
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
Opisy modułówi ich funkcji;
* Moduły podstawowe
** {{lru|Moduły/Parametry}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
** {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
** {{lru|Moduły/Nazwy}} - operujących na nazwach MediaWiki projektu.
** {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
** {{lru|Moduły/Pudełko}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
** {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
** {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
** {{lru|Moduły/StronicowyParser}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
** {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
** {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
** {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
** {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
* Moduły standardowe
** {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
** {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
** {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
** {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
** {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* Specjalistyczne
** {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
** {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
** {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
** {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
** {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
qzqq5bj1nem5t7lhpo5thpfhxqzxuvi
Szablon:NawigacjaSpecjalna/Nawigacja/Pomoc:Spis treści
10
61114
553050
551605
2026-08-23T23:48:19Z
Persino
2851
553050
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
|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/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/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>
sdboilku6cj0a1ppq4lb1ij5vn6ijey
Wikibooks:Moduły/Parametry
4
63291
553025
548307
2026-08-23T22:10:10Z
Persino
2851
/* {{Code|p["LiczbaElementówNumerowanychTablicy"]}} */
553025
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Funkcja z użytym parametrem {{Code|mnoga}} z wartością {{Code|true}} jest taka, że zawsze zwracana jest wartość {{Code|2}} przez nią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowo funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji.
Funkcja też kopiuje dokładnie tabele również z przyłączonymi metafunkcjami, ale ona musi mięc wtedy metodę: {{Code|__metatabelka.KopiujMetaTabela}}, bo w przeciwnym razie żadna metabela nie zostanie przekopiowana, wtedy kopiowanie będzie niedokładne. Dla tabel bez metatabel kopiowanie jest rekurencyjne i dokładne.
Przykładami metatabel z tą funkcją do kopiowania metatabel są: {{Code|{{sr|#p.MetaTabelkaParsowanieSzablonu|p=Szablonowe}}}} i {{Code|{{sr|#p.MetaTabelkaSzablonowe|p=Szablonowe/Potrzebne}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
f0vs4gftg65fx5zeu0tvl4mk3s8yacr
553026
553025
2026-08-23T22:10:59Z
Persino
2851
/* {{Code|p["LiczbaElementówNienazwanychTablicy"]}} */
553026
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Funkcje liczb elementów w tabeli ==
=== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ===
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Funkcja z użytym parametrem {{Code|mnoga}} z wartością {{Code|true}} jest taka, że zawsze zwracana jest wartość {{Code|2}} przez nią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
=== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
=== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ===
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Funkcja z użytym parametrem {{Code|mnoga}} z wartością {{Code|true}} jest taka, że zawsze zwracana jest wartość {{Code|2}} przez nią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
=== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ===
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
=== {{Code|p["LiczbaElementówTablicy"]}} ===
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
=== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ===
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
== Funkcje minimalnej i maksymalnej wartości w tabeli ==
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ===
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
=== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ===
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
=== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ===
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
== Funkcje, czy są takie parametry ==
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowo funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
=== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
=== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyNazwaneTablicy"]}} ===
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
=== {{Code|p["CzySąParametrySzablonu"]}} ===
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
=== {{Code|p["CzySąElementyTablicy"]}} ===
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
=== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ===
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
== Funkcje kopiowania tabel ==
=== {{Code|p["KopiujTabelęŁańcuchów"]}} ===
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementów"]}} ===
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
=== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ===
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
=== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ===
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji.
Funkcja też kopiuje dokładnie tabele również z przyłączonymi metafunkcjami, ale ona musi mięc wtedy metodę: {{Code|__metatabelka.KopiujMetaTabela}}, bo w przeciwnym razie żadna metabela nie zostanie przekopiowana, wtedy kopiowanie będzie niedokładne. Dla tabel bez metatabel kopiowanie jest rekurencyjne i dokładne.
Przykładami metatabel z tą funkcją do kopiowania metatabel są: {{Code|{{sr|#p.MetaTabelkaParsowanieSzablonu|p=Szablonowe}}}} i {{Code|{{sr|#p.MetaTabelkaSzablonowe|p=Szablonowe/Potrzebne}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
== Funkcje istnienia parametrów ==
=== {{Code|p["NazwanyLiczbą"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p["NazwanyCiągiem"]}} ===
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Nienazwane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
=== {{Code|p.Numerowane}} ===
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== Funkcje manipulowania formatów łańcuchów znakowych ==
=== {{Code|p["Odstępy"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
==== Funkcja biblioteczna ====
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
== Funkcje dodawania lub usuwania elementu do tabeli zbioru ==
=== {{Code|p.DodajElementDoZbioru}} ===
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
== Funkcje istnienia elementów tabeli ==
=== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ===
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ===
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiKluczTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
=== {{Code|p.CzyJestTakiElementTabeli}} ===
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
== Łączenie wielu tabel ==
=== {{Code|p["ŁączDwieTabele"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ===
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
=== {{Code|p["ŁączNumerowaneTabele"]}} ===
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączNienazwaneTabele"]}} ===
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
=== {{Code|p["ŁączTabele"]}} ===
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
== Funkcje dodawania lub usuwania elementów z tabeli o takich kluczach ==
=== {{Code|p["UsuńElementyTabeli"]}} ===
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
== Tworzenie tabeli ==
=== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ===
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
== Funkcje typu ==
=== {{Code|p.TypeTable}} ===
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeFunction}} ===
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeString}} ===
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeBoolean}} ===
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNumber}} ===
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
=== {{Code|p.TypeNil}} ===
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== Funkcje prawdy i fałszu ==
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
=== {{Code|CzyTakSilnik}} ===
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
=== {{Code|p["CzyTakCiąg"]}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
=== {{Code|p.CzyTak}} ===
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
== Funkcje parametrów ==
=== {{Code|p.PobierzFrameEwentualnieParent}} ===
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
=== {{Code|p.PobierzArgsParametry}} ===
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
=== {{Code|p.PobierzParametryRamki}} ===
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
=== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ===
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
=== {{Code|p.PobierzParametr}} ===
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
== Funkcje wartości logicznej ==
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
=== {{Code|p.And}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Or}} ===
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
=== {{Code|p.Not}} ===
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
== Funkcje porównań ==
=== {{Code|p.Mniejszy}} ===
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
== Ile jest podanych elementów w szablonie według parametrów ramki ==
=== {{Code|p.IlePodano}} ===
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
== Metafunkcje i metatabele ==
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ===
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
=== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz)}} ===
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
== Iteratory ==
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
=== {{Code|p.IteratorPoNumerowanychElementachTablicy}} ===
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
=== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} ===
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== Funkcje wartości minimalnej i maksymalnej ==
=== {{Code|p.Max}} ===
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
=== {{Code|p.Min}} ===
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
==== Odpowiednik szablonowy ====
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
==== Funkcja biblioteczna ====
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ttq8ygufbemibj8zf0w5mnsese029pf
553047
553026
2026-08-23T23:09:55Z
Persino
2851
UWAGA! Zastąpienie treści hasła bardzo krótkim tekstem: „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Moduł wywołuje się za pomocą polecenia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); </syntaxhighlight> dzięki, k…”
553047
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Spis treści ==
* {{lru|Moduły/Parametry/Tom I}} -
* {{lru|Moduły/Parametry/Tom II}} -
* {{lru|Moduły/Parametry/Tom III}} -
* {{lru|Moduły/Parametry/Tom IV}} -
* {{lru|Moduły/Parametry/Tom V}} -
* {{lru|Moduły/Parametry/Tom VI}} -
* {{lru|Moduły/Parametry/Tom VII}} -
* {{lru|Moduły/Parametry/Tom VIII}} -
* {{lru|Moduły/Parametry/Tom IX}} -
* {{lru|Moduły/Parametry/Tom X}} -
* {{lru|Moduły/Parametry/Tom XI}} -
* {{lru|Moduły/Parametry/Tom XII}} -
* {{lru|Moduły/Parametry/Tom XIII}} -
* {{lru|Moduły/Parametry/Tom XIV}} -
* {{lru|Moduły/Parametry/Tom XV}} -
* {{lru|Moduły/Parametry/Tom XVI}} -
* {{lru|Moduły/Parametry/Tom XVII}} -
* {{lru|Moduły/Parametry/Tom XVIII}} -
* {{lru|Moduły/Parametry/Tom XIX}} -
* {{lru|Moduły/Parametry/Tom XX}} -
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
igfzvjiqx69948796c5zcsrql2caoz1
553048
553047
2026-08-23T23:20:06Z
Persino
2851
/* Spis treści */
553048
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Spis treści ==
* {{lru|Moduły/Parametry/Tom I}} - funkcje liczb elementów w tabeli,
* {{lru|Moduły/Parametry/Tom II}} - funkcje minimalnej i maksymalnej wartości w tabeli,
* {{lru|Moduły/Parametry/Tom III}} - funkcje, czy są takie parametry,
* {{lru|Moduły/Parametry/Tom IV}} - funkcje kopiowania tabel,
* {{lru|Moduły/Parametry/Tom V}} - funkcje istnienia parametrów,
* {{lru|Moduły/Parametry/Tom VI}} - funkcje manipulowania formatów łańcuchów znakowych,
* {{lru|Moduły/Parametry/Tom VII}} - funkcje dodawania lub usuwania elementu do tabeli zbioru,
* {{lru|Moduły/Parametry/Tom VIII}} - funkcje istnienia elementów tabeli,
* {{lru|Moduły/Parametry/Tom IX}} - łączenie wielu tabel,
* {{lru|Moduły/Parametry/Tom X}} - funkcje dodawania lub usuwania elementów z tabeli o takich kluczach,
* {{lru|Moduły/Parametry/Tom XI}} - tworzenie tabeli,
* {{lru|Moduły/Parametry/Tom XII}} - funkcje typu,
* {{lru|Moduły/Parametry/Tom XIII}} - funkcje prawdy i fałszu,
* {{lru|Moduły/Parametry/Tom XIV}} - funkcje parametrów,
* {{lru|Moduły/Parametry/Tom XV}} - funkcje wartości logicznej,
* {{lru|Moduły/Parametry/Tom XVI}} - ffunkcje porównań,
* {{lru|Moduły/Parametry/Tom XVII}} - ile jest podanych elementów w szablonie według parametrów ramki,
* {{lru|Moduły/Parametry/Tom XVIII}} - metafunkcje i metatabele,
* {{lru|Moduły/Parametry/Tom XIX}} - iteratory,
* {{lru|Moduły/Parametry/Tom XX}} - funkcje wartości minimalnej i maksymalnej.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
086wrt7kxjzanbvjqicemjjmg4bzrfr
553049
553048
2026-08-23T23:20:55Z
Persino
2851
/* Spis treści */
553049
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł: {{ld2|Parametry}}, służy do operowania na wszelkiego rodzaju parametrach, modyfikowaniu ich, a nawet podawania z funkcji z tablicy ramki tablicy transportu tego modułu, i innych funkcji z innych modułów, które wykorzystują funkcje parametru tego modułu.
Będziemy mówili, że zbiór jest ponumerowany, gdy ma elementy nienazwane od jeden zwyż, bez przerw, do pewnego końca, wtedy jest to sekwencja w języku {{lpg|Lua}}, a jeżeli ona nie jest ponumerowana, to ma tylko elementy nienazwane, czyli wtedy nie jest sekwencją. Zbiór z elementami nienazwanymi (nazwane liczbami naturalnymi) może zawierać czasami elementy nazwane, ktorego nazwy nie są już takie, zwykle je się oznacza łańcuchami znakowymi, a w języku {{lpg|Lua}} to są po prostu elementy typu: {{Code|string}}, a liczby naturalne typu: {{Code|number}}.
== Spis treści ==
* {{lru|Moduły/Parametry/Tom I}} - funkcje liczb elementów w tabeli,
* {{lru|Moduły/Parametry/Tom II}} - funkcje minimalnej i maksymalnej wartości w tabeli,
* {{lru|Moduły/Parametry/Tom III}} - funkcje, czy są takie parametry,
* {{lru|Moduły/Parametry/Tom IV}} - funkcje kopiowania tabel,
* {{lru|Moduły/Parametry/Tom V}} - funkcje istnienia parametrów,
* {{lru|Moduły/Parametry/Tom VI}} - funkcje manipulowania formatów łańcuchów znakowych,
* {{lru|Moduły/Parametry/Tom VII}} - funkcje dodawania lub usuwania elementu do tabeli zbioru,
* {{lru|Moduły/Parametry/Tom VIII}} - funkcje istnienia elementów tabeli,
* {{lru|Moduły/Parametry/Tom IX}} - funkcje łączenia wielu tabel,
* {{lru|Moduły/Parametry/Tom X}} - funkcje dodawania lub usuwania elementów z tabeli o takich kluczach,
* {{lru|Moduły/Parametry/Tom XI}} - funkcje tworzenia tabeli,
* {{lru|Moduły/Parametry/Tom XII}} - funkcje typu,
* {{lru|Moduły/Parametry/Tom XIII}} - funkcje prawdy i fałszu,
* {{lru|Moduły/Parametry/Tom XIV}} - funkcje parametrów,
* {{lru|Moduły/Parametry/Tom XV}} - funkcje wartości logicznej,
* {{lru|Moduły/Parametry/Tom XVI}} - ffunkcje porównań,
* {{lru|Moduły/Parametry/Tom XVII}} - ile jest podanych elementów w szablonie według parametrów ramki,
* {{lru|Moduły/Parametry/Tom XVIII}} - metafunkcje i metatabele,
* {{lru|Moduły/Parametry/Tom XIX}} - iteratory,
* {{lru|Moduły/Parametry/Tom XX}} - funkcje wartości minimalnej i maksymalnej.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4wghj1fhdkpac9hzdisozoflbxmxoee
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III
4
63512
552950
552731
2026-08-23T14:44:20Z
Persino
2851
/* {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} */
552950
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} ==
Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - linia do sprawdzenia,
* {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy.
Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={
[1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
[2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
};
</syntaxhighlight>
* Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}},
* W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu,
** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł.
Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania.
== {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} ==
Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst,
* {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania,
* {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania,
* {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu.
; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}}
* Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
* Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}.
* Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
</syntaxhighlight>
Parametry zwracane dla wyszukanego rozdziału zwracanego:
* {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim,
* {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim.
W pozostałych przypadkach funkcja nie zwraca żadnej wartości.
== {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} ==
Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end;
</syntaxhighlight>
Parametry fukcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika,
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości.
== {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} ==
Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, jeśli są: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}},
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}},
* {{Code|jak}} - jak w: {{LinkPatrz|jak}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
</syntaxhighlight>
Wyjaśnienie parametrów zwracanych:
* {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli wyszukiwana linia spełniająca pewne kryteria.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bger0x50sqgt72jvbd7l2n3ow0mxyem
552951
552950
2026-08-23T14:45:02Z
Persino
2851
/* {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} */
552951
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} ==
Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - linia do sprawdzenia,
* {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy.
Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={
[1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
[2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
};
</syntaxhighlight>
* Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}},
* W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu,
** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł.
Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania.
== {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} ==
Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst,
* {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania,
* {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania,
* {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu.
; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}}
* Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
* Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}.
* Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
</syntaxhighlight>
Parametry zwracane dla wyszukanego rozdziału zwracanego:
* {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim,
* {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim.
W pozostałych przypadkach funkcja nie zwraca żadnej wartości.
== {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} ==
Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end;
</syntaxhighlight>
Parametry fukcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika,
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości.
== {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} ==
Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, jeśli są: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}},
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}},
* {{Code|jak}} - jak w: {{LinkPatrz|jak}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
</syntaxhighlight>
Wyjaśnienie parametrów zwracanych:
* {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli wyszukiwana linia spełniająca pewne kryteria.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sro29t0fksrjsn3q6tm55huk8xjb5j7
552952
552951
2026-08-23T14:46:54Z
Persino
2851
/* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */
552952
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} ==
Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - linia do sprawdzenia,
* {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy.
Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={
[1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
[2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
};
</syntaxhighlight>
* Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}},
* W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu,
** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł.
Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania.
== {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} ==
Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst,
* {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania,
* {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania,
* {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu.
; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}}
* Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
* Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}.
* Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
</syntaxhighlight>
Parametry zwracane dla wyszukanego rozdziału zwracanego:
* {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim,
* {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim.
W pozostałych przypadkach funkcja nie zwraca żadnej wartości.
== {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} ==
Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end;
</syntaxhighlight>
Parametry fukcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika,
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości.
== {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} ==
Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}, z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, jeśli są: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}},
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}},
* {{Code|jak}} - jak w: {{LinkPatrz|jak}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
</syntaxhighlight>
Wyjaśnienie parametrów zwracanych:
* {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli wyszukiwana linia spełniająca pewne kryteria.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
socbkibj7tjfc95fduhsw3h78flq243
552953
552952
2026-08-23T14:47:14Z
Persino
2851
/* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */
552953
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} ==
Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - linia do sprawdzenia,
* {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy.
Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={
[1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
[2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
};
</syntaxhighlight>
* Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}},
* W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu,
** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł.
Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania.
== {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} ==
Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst,
* {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania,
* {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania,
* {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu.
; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}}
* Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
* Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}.
* Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
</syntaxhighlight>
Parametry zwracane dla wyszukanego rozdziału zwracanego:
* {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim,
* {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim.
W pozostałych przypadkach funkcja nie zwraca żadnej wartości.
== {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} ==
Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end;
</syntaxhighlight>
Parametry fukcji:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika,
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości.
== {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} ==
Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}, z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, jeśli są: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}},
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}},
* {{Code|jak}} - jak w: {{LinkPatrz|jak}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
</syntaxhighlight>
Wyjaśnienie parametrów zwracanych:
* {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pzllg5cz9zmznhdmjn6qdezdq5qlm66
552986
552953
2026-08-23T16:45:34Z
Persino
2851
/* {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} */
552986
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} ==
Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - linia do sprawdzenia,
* {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy.
Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={
[1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
[2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
};
</syntaxhighlight>
* Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}},
* W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu,
** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł.
Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania.
== {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} ==
Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst,
* {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania,
* {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania,
* {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu.
; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}}
* Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
* Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}.
* Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
</syntaxhighlight>
Parametry zwracane dla wyszukanego rozdziału zwracanego:
* {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim,
* {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim.
W pozostałych przypadkach funkcja nie zwraca żadnej wartości.
== {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} ==
Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end;
</syntaxhighlight>
Parametry fukcji:
* Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik,
* Paranetry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika,
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości.
== {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} ==
Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}, z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, jeśli są: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}},
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}},
* {{Code|jak}} - jak w: {{LinkPatrz|jak}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
</syntaxhighlight>
Wyjaśnienie parametrów zwracanych:
* {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gk7e5l1b389xwev2yx5egxzj7gof3l6
552987
552986
2026-08-23T16:47:07Z
Persino
2851
/* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */
552987
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} ==
Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - linia do sprawdzenia,
* {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy.
Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={
[1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
[2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
};
</syntaxhighlight>
* Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}},
* W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu,
** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł.
Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania.
== {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} ==
Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst,
* {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania,
* {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania,
* {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu.
; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}}
* Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
* Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}.
* Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
</syntaxhighlight>
Parametry zwracane dla wyszukanego rozdziału zwracanego:
* {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim,
* {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim.
W pozostałych przypadkach funkcja nie zwraca żadnej wartości.
== {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} ==
Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end;
</syntaxhighlight>
Parametry fukcji:
* Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik,
* Paranetry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika,
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości.
== {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} ==
Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}, z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, jeśli są: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}},
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}},
* {{Code|jak}} - jak w: {{LinkPatrz|jak}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}.
Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
</syntaxhighlight>
Wyjaśnienie parametrów zwracanych:
* {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qr2o4t0zbxs9uvcdzapu2e9n383lodg
553001
552987
2026-08-23T17:42:54Z
Persino
2851
/* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */
553001
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} ==
Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - linia do sprawdzenia,
* {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy.
Funkcja używa do swojego działania tabeli {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}} {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={
[1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
[2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",
};
</syntaxhighlight>
* Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}},
* W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu,
** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł.
Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania.
== {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} ==
Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą być odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności, jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst,
* {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania,
* {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania,
* {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu.
; Sprawdzanie, linii wyszukanej, czy to jest{{dk}} {{nobold|spis treści}}, czy{{dk}} {{nobold|spis rzeczy}}{{dk}}
* Funkcja wyszukuje kolejnej linie, aż do zakończenia jej zasobów, jak nie znalazł jej odpowiedniej, przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
* Funkcja sprawdza linię przy pomocy procedury, czy wyszukana linia reprezentuje, co szukamy, według tego rozdziału, według: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}.
* Jak on to znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
</syntaxhighlight>
Parametry zwracane dla wyszukanego rozdziału zwracanego:
* {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim,
* {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim.
W pozostałych przypadkach funkcja nie zwraca żadnej wartości.
== {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} ==
Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end;
</syntaxhighlight>
Parametry fukcji:
* Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, w naszej funkcji, sprawdzany element, to szablon, czy znacznik,
* Paranetry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika,
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja do sprawdzania, w tym przypadku, szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości.
== {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} ==
Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}, z tego wyszukuje zmienne z iteratora z jego pierwszego wywołania iteracyjnego, i z tylko jednego, bez iterowania w pętli, z pierwszej iteracji są zwykle parametry: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, lub wartości nilowe. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}},
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}},
* {{Code|jak}} - jak w: {{LinkPatrz|jak}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, jeśli tak, to funkcja zgłasza powodzenie i zwraca wyniki.
Jeżeli wszystko poszło dobrze, to zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}:
<syntaxhighlight lang="lua">
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
</syntaxhighlight>
Wyjaśnienie parametrów zwracanych:
* {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}, czyli wyszukiwana linia spełniająca pewne kryteria.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bslm243ph8ezllhw0u28jutjq150eiw
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II
4
63917
552921
552730
2026-08-23T13:02:43Z
Persino
2851
/* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */
552921
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu,
* {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu,
* {{Code|kod}} {{Patrz|kod}} - kod tego obiektu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
* {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
* {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6p6uhj4mlrjn7nznvd1cgul9s6frblt
552922
552921
2026-08-23T13:15:26Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
552922
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu,
* {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu,
* {{Code|kod}} {{Patrz|kod}} - kod tego obiektu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
* {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
* {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane sięskończyły, to funkcja nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przesuzkiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
Wartość zzwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7yfvrwfwkfaqvjl3t5ei8jafehfcsyu
552923
552922
2026-08-23T13:15:43Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
552923
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu,
* {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu,
* {{Code|kod}} {{Patrz|kod}} - kod tego obiektu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
* {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
* {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane sięskończyły, to funkcja nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przesuzkiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
dijt6b2zvoritdnte1cvpwmevlkojcm
552924
552923
2026-08-23T13:16:16Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
552924
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu,
* {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu,
* {{Code|kod}} {{Patrz|kod}} - kod tego obiektu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
* {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
* {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przesuzkiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
q0p0z7wkedg9qag2nuus3c5gpbbs5fb
552925
552924
2026-08-23T13:18:16Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
552925
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu,
* {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu,
* {{Code|kod}} {{Patrz|kod}} - kod tego obiektu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
* {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
* {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
t8zb4lqvjm3qlchqcg4dtiicunptuye
552926
552925
2026-08-23T13:20:55Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
552926
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu,
* {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu,
* {{Code|kod}} {{Patrz|kod}} - kod tego obiektu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
* {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
* {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{LinkPatrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
n84d0z5l5ops6huxvmt2dceop0in3jg
552927
552926
2026-08-23T13:25:55Z
Persino
2851
/* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */
552927
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu,
* {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu,
* {{Code|kod}} {{Patrz|kod}} - kod tego obiektu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
* {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
* {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funnkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{LinkPatrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nbcjh1fk7fhvldhmd31rqac24iyu6hv
552928
552927
2026-08-23T13:28:38Z
Persino
2851
/* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */
552928
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* {{Code|szablon}} {{Patrz|szablon}} - wnętrze jakiego zakodowanego obiektu,
* {{Code|obiekt}} {{Patrz|obiekt}} - typ tego obiektu,
* {{Code|kod}} {{Patrz|kod}} - kod tego obiektu,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
* {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
* {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{LinkPatrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
kxl0sggj4twqnkszjqhccoik9tfgl7f
552942
552928
2026-08-23T14:34:07Z
Persino
2851
/* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */
552942
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Używane kody|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{LinkPatrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
simai6o7rye945ws7gxhjhxpf3jamh6
552943
552942
2026-08-23T14:37:30Z
Persino
2851
/* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */
552943
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Używane kody|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{LinkPatrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
emv3mtvaas1h240rldyd2xt77f71z5w
552944
552943
2026-08-23T14:39:05Z
Persino
2851
/* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */
552944
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Używane kody|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{Patrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{LinkPatrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
46y5i8bjg2381lgbeedumvjw27yds4q
552945
552944
2026-08-23T14:40:03Z
Persino
2851
/* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */
552945
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Używane kody|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{LinkPatrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2menxhe0ojw3aq4ga2te8q9lcj6a6eq
552946
552945
2026-08-23T14:41:01Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
552946
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Używane kody|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
otq5p3pgoy2wgij9lrs7j57kygnhj4a
552948
552946
2026-08-23T14:42:54Z
Persino
2851
/* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */
552948
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Używane kody|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
162n6nxrufzwgwi0j7fb005nzkoc8xq
552949
552948
2026-08-23T14:43:25Z
Persino
2851
/* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */
552949
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Używane kody|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
10u03a52phsdjyqy8xkwojyfg8jwy8f
552973
552949
2026-08-23T16:14:51Z
Persino
2851
552973
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1zsx6kzjrz984ilaknlxe10lx2s927k
552980
552973
2026-08-23T16:27:55Z
Persino
2851
/* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */
552980
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Funkcja sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ss8ztbnu9mzwmsurj6c9vfis4zsfiwl
552993
552980
2026-08-23T17:20:20Z
Persino
2851
/* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */
552993
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Robi to przy pomocy funkcji {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}},
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ivrc29e28uafdggbghyfw7txdmeffga
552995
552993
2026-08-23T17:23:55Z
Persino
2851
/* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */
552995
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Robi to przy pomocy funkcji {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} - elementy złożone z rodzaju kodu i jego numeru,
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} - elementy kodowania kodów różnych obiektów,
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} - parametry zakodowanego spisu,
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
f56gic7mynxlmd5oms5b0s4voui4nox
552996
552995
2026-08-23T17:24:36Z
Persino
2851
/* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */
552996
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Robi to przy pomocy funkcji {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji:
** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} - elementy złożone z rodzaju kodu i jego numeru,
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} - elementy kodowania kodów różnych obiektów,
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} - parametry zakodowanego spisu.
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nrm0f5c449ovdvxf3hopv4x55txbphm
552997
552996
2026-08-23T17:27:38Z
Persino
2851
/* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */
552997
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Robi to przy pomocy funkcji {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji, są to elementy:
** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} - złożone z rodzaju kodu i jego numeru,
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} - kodowania kodów różnych obiektów,
* Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany:
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} - parametry zakodowanego spisu.
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jesst link, to funkcja w nagłóku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3q66pciqf4e21ddcciwymor1ybjz3x5
552998
552997
2026-08-23T17:31:54Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
552998
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Robi to przy pomocy funkcji {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji, są to elementy:
** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} - złożone z rodzaju kodu i jego numeru,
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} - kodowania kodów różnych obiektów,
* Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany:
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} - parametry zakodowanego spisu.
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
m99t1u1g4m5eibjwln3kekk39elm6gi
552999
552998
2026-08-23T17:33:32Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
552999
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Robi to przy pomocy funkcji {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji, są to elementy:
** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} - złożone z rodzaju kodu i jego numeru,
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} - kodowania kodów różnych obiektów,
* Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany:
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} - parametry zakodowanego spisu.
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem {{lpg|Lua}} w {{lpr|Lua|Scribunto}} kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jrmavb0jiactosgpvzhw06roykm2au9
553000
552999
2026-08-23T17:34:05Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
553000
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Robi to przy pomocy funkcji {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji, są to elementy:
** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} - złożone z rodzaju kodu i jego numeru,
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} - kodowania kodów różnych obiektów,
* Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany:
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} - parametry zakodowanego spisu.
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
34y1wbz39stai9s8rjqq4l6yu88n5b6
553011
553000
2026-08-23T19:04:30Z
Persino
2851
/* {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} */
553011
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} ==
Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być linkiem do artykułu (podstrony) tego podręcznika. Robi to przy pomocy funkcji {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja też sprawdza, czy ten tam artykuł nie jest artykułem okładką, czy artykułem niedozwolonym, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}} {{Patrz|p.artykularne_niespisowe}}, którego określenie:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}:
<syntaxhighlight lang="lua">
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))));
</syntaxhighlight>
Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}:
* Parametry z sekcji, są to elementy:
** {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}} - złożone z rodzaju kodu i jego numeru,
** {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}} - kodowania kodów różnych obiektów,
* Parametry z sekcji przeróżnych zmiennych, np. tabel, charakteryzujących tekst zakodowany:
** {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}} - parametry zakodowanego spisu.
* Inne parametry:
** {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuły wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy,
** {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za dozwoloną stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niedozwolony.
Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}:
<syntaxhighlight lang="lua">
return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}:
* {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny,
* {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki|StronicowyParser/AnalizaSpisuRzeczy}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii,
* {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany,
* {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone.
Funkcja oznacza artyluły określane zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, dla innej wartości funkcja zzucza wartości: {{Code|return nil,false;}}, a dla tego pierwszego dzięki tej zmiennej: {{LinkPatrz|czy_podrecznik}}, funkcja oznacza artykuły za pożliwie podręcznikowe, jeśli ona przyjmuje wartość prawdziwą, jeśli nie, to one są możliwie niepodręcznikowe.
== {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu.
We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}},
* Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów:
<syntaxhighlight lang="lua">
return true,1;
</syntaxhighlight>
Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią, są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} ==
Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomiona ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}.
Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci:
* Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę:
<syntaxhighlight lang="lua">
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez nią:
* To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}.
== {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} ==
Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego (dozwolonego), niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, bądź artykuł glówny, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy}} - jest to pojedyncza linia pomiędzy znakami noych linii lub elementami początku i końca tekstu,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}.
== {{Śródtytuł|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}}{{Code|p.SzukajObiektuArtykularnegoWeElemencieTekstowym}} ==
Funnkcja szuka, czy są linki szablonowe: {{Code|SZABLON}} - z tego tylko linki szablonowe, linki wewnętrzne: {{Code|LINW}}, i linki zewnętrzny: {{Code|LINKZ}}, w podanym zakodowanym tekście, przeszukiwanym przez funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a sprawdzanym, czy to jest to, przez inną: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, jeżeli według tej funkcji, to jest link, to funkcja w nagłówku zwraca wartość prawdziwą, a jeżeli nie ma takiego linku, lub dane się skończyły, to funkcja wtedy nic nie zwraca, tylko się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}},
** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, jest: {{Code|tekst}} {{Patrz|tekst}} - jest to przeszukiwana linia,
** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}},
** Ma w sobie drugi parametr, który jest wzorem, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, kodu przeszukiwanego tekstu, czyli jest to wzor: {{Code|szablon_normy_kodowania_szablonu}} {{Patrz|szablon_normy_kodowania_szablonu}}.
Wartość zwracana:
* Wartość prawdziwa: {{Code|true}}, w przypadku wykrycia takiego linki, w przeciwnym wypadku: {{Code|false}}, w przypadku niepowodzenia.
Funkcja bezpośrednio szuka w tekście zakodowanym różnych typów linków, tzn.one muszą być w kodzie tekstu {{LinkPatrz|tekst}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6mx3w3a57gve8ycsr5zzlprp7ipp9a1
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV
4
63919
552916
552836
2026-08-23T12:35:59Z
Persino
2851
/* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */
552916
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} danego typu z dwóch, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
o4xllzouh9dgwo4c237wsyf6zw0jn4n
552917
552916
2026-08-23T12:38:08Z
Persino
2851
/* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */
552917
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, też jego zawartość w pierwszym jego argumencie, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku użyte w funkcji wspomniane poniżej, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czyli całego takiego, typ obiektu, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i o numerze w postaci numeru szablonu tego obiektu w bazie kodów {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a to pierwsze jest uzyskane z dwóch poprzednich z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w tym większym, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości w kodzie reprezentowanym przez dwie zmienne, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Fuuncja wyszukuje rozdziały, a w nich pierwsze linki, z: {{Code|obiekt}}, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki używane do definiowania spisów treści zdefiniowane w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gtgyhtuehozzb8vkepssuyygsljt5ez
552918
552917
2026-08-23T12:51:05Z
Persino
2851
/* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */
552918
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w nim, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, są generowane przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nqdhtzstejp59rhzv6y97p0kuxyj85l
552919
552918
2026-08-23T12:53:25Z
Persino
2851
/* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */
552919
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, dla tego pierwszego linku, w nim, którym jest rozdział, nie link, charakteryzujące kod {{Code|{{m|Szablonowe}}}} bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Te linki muszą być zakodowane bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}, czy są takie.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
68w50o84qxxfbwhe9og478gt297n3cj
552920
552919
2026-08-23T12:59:19Z
Persino
2851
/* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */
552920
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Tam jakiś pierwszy linki musi być zakodowany bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. A jeżeli nie, to te trzy parametry zrzuci, a tego trzeciego już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}, czy są takie.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
n7nplje0sh3ujnal6gve0drk59s6e8h
552955
552920
2026-08-23T15:47:53Z
Persino
2851
552955
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Tam jakiś pierwszy linki musi być zakodowany bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. A jeżeli nie, to te trzy parametry zrzuci, a tego trzeciego już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}, czy są takie.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fldpcom2ky9fttollb9jcytqq88v0jc
552988
552955
2026-08-23T16:48:35Z
Persino
2851
/* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */
552988
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* Paraametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Tam jakiś pierwszy linki musi być zakodowany bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. A jeżeli nie, to te trzy parametry zrzuci, a tego trzeciego już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}, czy są takie.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rair62tmabnzol3r9y6cpvu5z963wob
552989
552988
2026-08-23T16:52:30Z
Persino
2851
/* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */
552989
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo albo nagłówkowo, poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* Paraametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Tam jakiś pierwszy linki musi być zakodowany bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. A jeżeli nie, to te trzy parametry zrzuci, a tego trzeciego już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Paramtry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}, czy są takie.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bjtvg7jfl6bknn3zfw4ao8mzap0oyzi
553002
552989
2026-08-23T17:45:45Z
Persino
2851
/* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */
553002
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały, dodatnie równaniowe, centrowane szablonowo lub znacznikowo i nagłówkowe - poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* Paraametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, w postaci trzech kodów szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów teksrtu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji, do uzyskiwania danych funkcja używa danych zwróconych przez pierwszzą funkcję w postaci dwóch pierwszych parametrów.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Tam jakiś pierwszy linki musi być zakodowany bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. A jeżeli nie, to te trzy parametry zrzuci, a tego trzeciego już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Paramtry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}, czy są takie.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
13lz4weqkk62qu9fzolik7zet7dh8va
553003
553002
2026-08-23T17:54:14Z
Persino
2851
/* {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} */
553003
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały, dodatnie równaniowe, centrowane szablonowo lub znacznikowo i nagłówkowe - poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* Paraametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, tzn.: {{Code|SZABLON}}, {{Code|ZNACZNIK}} i trzeciego nieokreślonej żadnym kodem, w postaci trzech konstrukcji szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy, to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów tekstu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzającc, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Tam jakiś pierwszy linki musi być zakodowany bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. A jeżeli nie, to te trzy parametry zrzuci, a tego trzeciego już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Paramtry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}, czy są takie.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pbaltjlomkujtpu14gkh7n5kc5056gu
553004
553003
2026-08-23T17:56:58Z
Persino
2851
/* Dalszy opis funkcji */
553004
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały, dodatnie równaniowe, centrowane szablonowo lub znacznikowo i nagłówkowe - poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* Paraametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, tzn.: {{Code|SZABLON}}, {{Code|ZNACZNIK}} i trzeciego nieokreślonej żadnym kodem, w postaci trzech konstrukcji szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy, to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów tekstu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzając, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Tam jakiś pierwszy linki musi być zakodowany bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. A jeżeli nie, to te trzy parametry zrzuci, a tego trzeciego już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Paramtry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze inne linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}, czy są takie.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hfrzdchqm8txcaojqjpbhvduoq0sfdi
553005
553004
2026-08-23T18:04:11Z
Persino
2851
/* {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} */
553005
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Funkcja przeszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, linie rodziałów zakodowanych, a dla rozdziału dodatniego równaniowego wykorzystuje natomiast funkcję: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja {{ZobaczTeż|rozdziały}} wyszukuje rozdziały, dodatnie równaniowe, centrowane szablonowo lub znacznikowo i nagłówkowe - poprzez szablony, czy znaczniki nagłówków.
* Rozdziały równaniowe, to są rozdziały otoczone wokół stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Rozdziały, oczywiście, że dodatnie, nagłówkowe, to te: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}},
** Lub przez użycie szablonu: {{s|HNumer}}, do generowania sztucznego nagłówka, ta funkcja generuje powyższe nagłówki, przy pomocy zachowania zgodności z rozdziałami dodatnimi rówaniowo, nawet gdy po lewej i poprawej, liczba {{Code|{{=}}}}, jest większa niż: {{Code|6}}, co normalnie jest niedozwolone, w jego pierwszy parametrze, który symbolizuje pewien rozdział dodatni równaniowo,
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicja skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie,
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom I}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z tego samego nagłówka, przed transformacją, z przechwyconego z elementu, w którym jest właśnie to,
* Paraametry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
=== {{Śródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}{{Code|RozpatrywanieNapisoweWprowadzeniaTekstu}} ===
Fukcja ogólna do przeszukiwania kolejnych elementów według wzoru i wskazywania ich pozycji początkowej, czy końcowej, i elementów przechwytywanych.
Funkcja została skonstrułowana, by wyszukiwała kolejne rozdziały różnych typów, tzn.: {{Code|SZABLON}}, {{Code|ZNACZNIK}} i trzeciego nieokreślonej żadnym kodem, w postaci trzech konstrukcji szczególnych wykorzystujących tą funkcję, w ogólnej funkcji, aby uzyskać pewne zmienne, by później je wykorzystać w funkcji {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}} do zwracania danych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzor}} - wzór dla tekstu, który przeszukujemy,
* {{Code|czy_rozdzial_rownaniowy_dodatni}} - czy to jest rozdział dadatni równaniowy, wtedy ona przyjmuje wartość prawdziwą, w przeciwnym wypadku fałszywą, wtedy mamy, to dla nagłówków zapisanych w postaci kodów, jak rozdziały centrowania szablonowe i znacznikowe, sztuczne nagłówki napisu wprowadzenia tekstu, czy znaczniki nagłówków,
* {{Code|__FUNKCJA1}} - funkcja do uzyskiwania danych z przechwytywanego ciągu wsadzanych jako parametr, i zwracania ich w postaci, co najwyżej dwóh kolejnych elementów, np. szablon i znumerowany kod danej bazy kodów tekstu zakodowanego, czy też może jako jedyny parametr nagłówek,
* {{Code|__FUNKCJA2}} - funkcja do przetwarzania kolejno elementów, i do sterowania pętlą, aby nie zawsze ona się zatrzymywała, funkcja te parametry zwracane przez pierwszą funkcję są wsadzane jako parametry do tej funkcji, wraz z trzecią funkcją, której wynik zwracamy bezpośrednią z tej funkcji.
=== Funkcja zwracająca parametry ===
Opis funkcji zwracającej parametry, która jest potrzebna właśnie do tego.
Do tej funkcji są wykorzystywane dane zwrcócone bezpośrednio z funkcji: {{LinkŚródtytuł|RozpatrywanieNapisoweWprowadzeniaTekstu}}, dla trzech różnych prrzypadków nagłówków, tzn. nagłówków zapisanych w postaci szablonów, znaczników i rozdziałów równaniowych, wtedy drugi parametr tej funkcji jest prawdziwy.
==== {{Śródtytuł|ParametryNapisuWprowadzeniaTekstu}}{{Code|ParametryNapisuWprowadzeniaTekstu}} ====
Funkcja przyjmuje i przygotowuje parametry do zwrócenia.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - początek i koniec danego typu napisu wprowadzenia tekstu, tych typów jest wiele,
* {{Code|spis_naglowka_stare}} {{Patrz|spis_naglowka_stare}}, spis przed analizą {{LinkZobaczTeż|spis_naglowka}},
* {{Code|spis_naglowka}} {{Patrz|spis_naglowka}} - spis {{ZobaczTeż|spis_naglowka}} przeanalizowany przez funkcję: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}, a później przez: {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, jeżeli parametr: {{LinkPatrz|czy_spis_tresci}}, istnieje, jest to robione poza tą funkcją, możliwe, że ta wartość nie istnieje,
* {{Code|spis_naglowka_poziom}} {{Patrz|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych, dla pozostałych nagłówków nie istnieje.
Funcja zwraca parametry napisane ogólnie według kodu dla każdego rodzaju napisu wprowadzenia tekstu:
<syntaxhighlight lang="lua">
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
</syntaxhighlight>
Wytłumaczenie parametrów zwracanych przez ten obiekt dla danego rodzaju rozdziału:
* {{Code|liczba_start}} i {{Code|liczba_koniec}} - jest to powtórzenie parametrów dwóch pierwszych z parametrów tej funkcji,
* {{Code|spis_naglowka}} - ten parametr jest liczony dla nieistniejącego parametru: {{LinkPatrz|czy_spis_tresci}}, są robione podobne operacje, jak w punkcie: {{LinkZobaczTeż|spis_naglowka}}, a jeżeli ten wpomniany parametr istnieje, to to nie jest robione w tej funkcji,
* {{Code|spis_naglowka_stare}} - spis przed analizą, po którym ten parametr zamienia się w ten powyższy ostatni element, możliwe, że ten parametr nie istnieje, wtedy jest brany z: {{LinkPatrz|spis_naglowka}},
* {{Code|spis_naglowka_poziom}} - poziom nagłówka, funkcja dostępna dla rozdziałów dodatnich, szablonu {{s|HNumer}} i znaczników nagłówkowych.
==== Dalszy opis funkcji ====
Funkcja w nagłówku zwraca parametry bezpośrednio z: {{LinkŚródtytuł|ParametryNapisuWprowadzeniaTekstu}}, w postaci, np. dla rozdziału dodatniego równaniowego:
<syntaxhighlight lang="lua">
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
</syntaxhighlight>
Dla innych typów nagłówków jest zamiast: {{Code|dodatni}}, w zmiennych w powyższym przykładzie jest: {{Code|szablon}} - dla rozdziałów szablonowych, czy {{Code|znacznik}} - znacznikowych.
Funkcja wybiera, jakiego typy nagłówków z zakresu wykrytych różnego typu, ma obsłużyć, i wtedy odpowiednio ustawia funkcję parametrów, wskazaną jak w powyższym przykładzie, względem maksymalnych, w wyszukiwaniu do tyłu, lub minimalnych, w wyszukiwanych do przodu, nagłówkach, lewych pozycji wartości uzyskanych ze wszystkich nagłówków, sprawdzając, czy to się zgadza, z którymiś pozycjami lewymi tych nagłówków trzech typów.
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
Funkcja uwzględnia nagłówki według {{LinkZobaczTeż|rozdziały}}, oprócz nagłówków równaniowych. Zawartością w nagłówkach centrowania, jest to wartość pierwszego parametru, a też w szablonie w sztucznych napisach wprowadzenia tekstu {{s|HNumer}}, jego zawartość to pierwszy jego argument, ale pomiędzy taką samą maksymalną liczbą znaków {{Code|{{=}}}} w nim, i jeszcze w jego wersji strimowanej.
Funkcja wyszukuje pierwszego dozwolonego linku w tekście, w elemencie całkowitej zawartości: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, którym są te wywołania tych nagłówków, uzyskanego z dwóch elementów, z tablicy wielowymiarowej, czyli: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}} - nagłówki szablonowe, lub {{Code|obiekt}} {{Code|{{=}}}} {{Code|ZNACZNIK}} - nagłówki znacznikowe, i numeru w postaci numeru szablonu tego poszczególnego typu w bazie kodów, więc: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, a ta zawartośść uzyskujemy z dwóch poprzednich z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}. Wyszukuje on w tak uzyskanej zawartości tego elementu, linki różnego typu, tzn. {{Code|LINKW}}, {{Code|LINKZ}} i linki szablonowe, i uzyskuje z tego trzy elementy, w nim, charakteryzujące kod: {{Code|{{m|Szablonowe}}}}, bazy kodów, a także wyszukuje w nim jego dalszy tekst, w nagłówku, po którym jest do końca jego zawartości, a jeżeli je znalazł, to to zwraca, te trzy zmienne i dalszy tekst, a jeżeli nie znalazł takiego linku, przy pierwszym kodzie, to wyszukuje dalej w tej zawartości, aż skończą się w tym zasoby danych, a jeśli się da, to je zwraca, w tak wytłumaczonej komplecie zmiennych, lub nic nie zrzuca, żadnego kompletu żadnych zmiennych.
Tam jakiś pierwszy linki musi być zakodowany bezpośrednio w takiej zawartości, aby je wykrył i zwrócił w takiej postaci, jak opisano. A jeżeli nie, to te trzy parametry zrzuci, a tego trzeciego już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji {{Patrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}:
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Paramtry z sekcji {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
** {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
Opis parametrów zwracanych dokończające jego dokumentację:
* Parametry z sekcji {{LinkZobaczTeż|Parametry złożone|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji {{LinkZobaczTeż|Parametry kodowania|StronicowyParser/AnalizaSpisuRzeczy}}:
** {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, mozliwe wartości: {{Code|SZABLON}} (linku szablonowe), {{Code|LINKW}} (linki wewnętrzne)i i {{Code|LINKZ}} (linki zewnętrzne),
** {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}},
* Inne parametry:
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy zwracany tekst w napisie wprowadzenia tekstu, po zwracanym jako jego parametry tej funkcji, czyli dalszego tekstu.
Kod zwracanych parametrów funkcji:
<syntaxhighlight lang="lua">
return szablon,obiekt,kod,dalszy_tekst;
</syntaxhighlight>
Funkcja wyszukuje rozdziały, a w nich pierwsze zarejestrowane linki, którymi są zakodowane linki wewnętrzne lub zewnętrzne, lub linku szablonowe, nawet inteligentne, którego nazwy są zakatologowane w tablicach, te linki mogą być inne, niż linki standardowe inteligentne, czyli: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
}
</syntaxhighlight>
Inne linki mogące być uzyte w rozdziałach zdefiniowane są w punkcie: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Jeszcze są wspomniane linki, to tzw. linki inteligentne standardowe, w przeciwieństwie do powyższych, ale nie do końca, można sprawdzić przez funkcję: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.PodzielNaElementyNazwowyWikiLinkInteligentny}}, czy są takie.
Przykład wywołania funkcji wraz z jego udokumentowanymi parametrami z: {{LinkPatrz|parametry-SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}, czyli:
<syntaxhighlight lang="lua">
local szablon,obiekt,kod,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qwrlvzjawez9s9m563qv07b6zms1sw1
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V
4
63920
552932
552907
2026-08-23T13:58:06Z
Persino
2851
/* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */
552932
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} ==
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bneca4p78j43t3cu9nxlmz2kkyjd83h
552934
552932
2026-08-23T14:06:29Z
Persino
2851
/* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} */
552934
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
88tsq9241xj8tqg6vyfwlnwdftkcm0j
552935
552934
2026-08-23T14:09:23Z
Persino
2851
/* {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} */
552935
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
bau5gxb1id3kmzsvkdu3heqemob4uog
552936
552935
2026-08-23T14:14:17Z
Persino
2851
/* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */
552936
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
aznyrudx4w72cj0xrce2e4igr69htqw
552937
552936
2026-08-23T14:14:47Z
Persino
2851
/* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */
552937
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
rjhj7ax5ez8mbtwlkckwpynv35rpiqs
552956
552937
2026-08-23T15:49:53Z
Persino
2851
/* {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} */
552956
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
7v74au99q5fuoffuy8l7nijoxzfnx45
552957
552956
2026-08-23T15:50:40Z
Persino
2851
/* {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} */
552957
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - jak kolejno w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
l3q5ydtis76nboywxanql833pqv8sro
552958
552957
2026-08-23T15:52:15Z
Persino
2851
/* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */
552958
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z ssekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
5qt6fyy7enufwm25y2ls4u3uq84rmco
552959
552958
2026-08-23T15:52:39Z
Persino
2851
/* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */
552959
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
4xvvm3pg5vg0ngvyk740z6kqfirfs6c
552960
552959
2026-08-23T15:54:23Z
Persino
2851
552960
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - nie jako łańcuch znakowy, dla ich generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
tspdo5qmt2iwb5rkm158jxmqzz3cvwh
552961
552960
2026-08-23T15:55:13Z
Persino
2851
/* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */
552961
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
nc66qzl6l50rmcs7cm33do0q9vl8vqn
552962
552961
2026-08-23T15:55:52Z
Persino
2851
/* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */
552962
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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/Tom II}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
atbeticy2lntnmqxyj9loi3ox1ywfay
552963
552962
2026-08-23T15:56:30Z
Persino
2851
/* {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} */
552963
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
2doqlgycrsj5zpe8gqqirywbvwcodhi
552964
552963
2026-08-23T15:57:08Z
Persino
2851
/* {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} */
552964
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
jwhf19e8ow5gisqn0h4w5t73epma2eq
552981
552964
2026-08-23T16:30:45Z
Persino
2851
552981
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez tego napisu wprowadzenia tekstu) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki. Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości. Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
1rjk4vlv31872ztjumtir9a8fhgf20z
553006
552981
2026-08-23T18:08:10Z
Persino
2851
/* {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} */
553006
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z przestrzeni książkowych polskiego {{NS|l=tak|pk=d|w=tak}}, ale danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, jeśli chodzi o ten rozważany rozdział, a ta funkcja rewiduje, czy jest jednak tak, i przy okazji niluje też inne zmienne należące do tablicy, w której są.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
jhfcjno3vfk4eg3yuylwvyxi5thaxzp
553007
553006
2026-08-23T18:19:33Z
Persino
2851
/* {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} */
553007
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
i1buol7b85yyy9qn5swa27esh85xua2
553008
553007
2026-08-23T18:24:08Z
Persino
2851
/* {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} */
553008
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek,jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
9en8zgk41ev7ae322fzh84je5ewzonm
553009
553008
2026-08-23T18:33:02Z
Persino
2851
/* Ciąg dalszy opisu funkcji */
553009
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
; Przypadek istnienia linii nie składającej się ze znaków odstępów{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Przeciwnie, jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii, a jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii - bo ją trzeba wliczać wramach wydzielonego spisu, a jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość, co na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
7xaqvs4a9s0c9offmjusus5q0bmfp30
553013
553009
2026-08-23T20:07:55Z
Persino
2851
/* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */
553013
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymujena normalnych danych lub po zakończeniu zasobów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje ty;e okrążeń pętli, 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, nawet, gdy ma dwukro jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
2aaovuh4vv1snh0f5q61g8lo20sfubd
553014
553013
2026-08-23T20:08:56Z
Persino
2851
/* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */
553014
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymujena normalnych danych lub po zakończeniu zasobów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, nawet, gdy ma dwukro jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy funkcja zwraca natychmiast swoje parametry według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
ee1v3f9btp99ug7z63b34vb8cg6diqt
553015
553014
2026-08-23T20:10:48Z
Persino
2851
/* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */
553015
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymujena normalnych danych lub po zakończeniu zasobów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, nawet, gdy ma dwukro jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, czy w kodzie są linki artykularne nie okładkowe (dozwolone) danej książki, nie należące do niej, i zwraca pozycję takiej linii, a jako drugi parametr zwraca wartość logiczną sugerująca, czy znaleziono taką pozycję linkową, czyli wartość prawdziwą (niezależnie, czy taką pozycję znaleziono pierwszą, czy którąś z kolei), przeciwnie ta wartość ma przeciwną wartość. Funkcja wyszukuje kolejne zakodowane linie od tyłu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pozycja, w którym taką pozycję określona przez funkcję znaleziono,
* Czy ta pozycje wuystępuje w pierwszej kolejności jako pozycja szablonowa w linii spisowej.
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
Funkcja wywołuje funkcję: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, jeśli ona zwróci wartość prawdziwą, to zwracaj dwa elementy:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
== {{Ś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>
isjvq11mcvx57frz1r8fsx9nvtvq0yd
553016
553015
2026-08-23T21:14:11Z
Persino
2851
/* {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} */
553016
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymujena normalnych danych lub po zakończeniu zasobów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, nawet, gdy ma dwukro jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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 w tekście, nabliższego
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi linkami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku.Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
dilj6v0nmba1kh3tt0lib8osn45qr1g
553017
553016
2026-08-23T21:17:26Z
Persino
2851
/* {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} */
553017
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymujena normalnych danych lub po zakończeniu zasobów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, nawet, gdy ma dwukro jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi linkami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku.Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
2641vpa4of2d10j03u8tlxea8l2vl7i
553018
553017
2026-08-23T21:18:18Z
Persino
2851
/* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */
553018
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
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 oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, nawet, gdy ma dwukro jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w poszukiwaniu linków, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi linkami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku.Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
o5eswaqb1ill92ysql2pkhro6sibeb8
553019
553018
2026-08-23T21:21:00Z
Persino
2851
/* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */
553019
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
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 oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, nawet, gdy ma dwukro jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi linkami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku.Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
hqwiyaf4wdgqhwxjoamulh67mjy3kxy
553020
553019
2026-08-23T21:30:00Z
Persino
2851
/* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */
553020
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
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 oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, nawet, gdy ma dwukro jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
Funkcja wyszukuje w linii, ale najwierw w: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, a później w: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, jeżeli w poprzednim nie znalazł, pierwszego takiego linku przyporządkowanemu, któremuś z tych obiektów.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
Jeśli zmienna {{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}}, 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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi linkami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku.Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
1zrk71au7x9f2an0wiz1t1asq7wtlku
553021
553020
2026-08-23T21:32:31Z
Persino
2851
/* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */
553021
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
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 oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, nawet, gdy ma dwukro jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
Funkcja wyszukuje w linii, ale najwierw w: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, a później w: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, jeżeli w poprzednim nie znalazł, pierwszego takiego linku przyporządkowagp, któremuś z tych obiektów, i przy pierwszym wykryciu zwraca wartość, ale dany obiekt uwwzględniany względem tego poprzedniegomusi spełniać prawa lub nie, w zależności od podanej zmiennej {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
Jeśli zmienna {{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}}, 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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi linkami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku.Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
t9m1zqjp7jq6uz1t5iisvg4j4gscsyt
553022
553021
2026-08-23T21:35:09Z
Persino
2851
/* {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} */
553022
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
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 oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
Funkcja wyszukuje w linii, ale najwierw w: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, a później w: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, jeżeli w poprzednim nie znalazł, pierwszego takiego linku przyporządkowagp, któremuś z tych obiektów, i przy pierwszym wykryciu zwraca wartość, ale dany obiekt uwwzględniany względem tego poprzedniegomusi spełniać prawa lub nie, w zależności od podanej zmiennej {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
Jeśli zmienna {{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}}, 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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi linkami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku.Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
sjadvx93221e3a9aeky2uut5yuryd9s
553023
553022
2026-08-23T21:36:10Z
Persino
2851
/* {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} */
553023
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
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 oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
Funkcja wyszukuje w linii, ale najwierw w: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, a później w: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, jeżeli w poprzednim nie znalazł, pierwszego takiego linku przyporządkowagp, któremuś z tych obiektów, i przy pierwszym wykryciu zwraca wartość, ale dany obiekt uwwzględniany względem tego poprzedniegomusi spełniać prawa lub nie, w zależności od podanej zmiennej {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
Jeśli zmienna {{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}}, 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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje kolejne linie przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi linkami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku.Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
fdkcv2zs5uh6erxmhig6ejb0umzl3x6
553051
553023
2026-08-24T00:11:00Z
Persino
2851
/* {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} */
553051
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
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 oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
Funkcja wyszukuje w linii, ale najwierw w: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, a później w: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, jeżeli w poprzednim nie znalazł, pierwszego takiego linku przyporządkowagp, któremuś z tych obiektów, i przy pierwszym wykryciu zwraca wartość, ale dany obiekt uwwzględniany względem tego poprzedniegomusi spełniać prawa lub nie, w zależności od podanej zmiennej {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
Jeśli zmienna {{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}}, 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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
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 kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić. A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi linkami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku.Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
6fv91l0hx7utqwp03mm3qnui6dzycm4
553052
553051
2026-08-24T00:13:16Z
Persino
2851
/* {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} */
553052
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
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 oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
Funkcja wyszukuje w linii, ale najwierw w: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, a później w: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, jeżeli w poprzednim nie znalazł, pierwszego takiego linku przyporządkowagp, któremuś z tych obiektów, i przy pierwszym wykryciu zwraca wartość, ale dany obiekt uwwzględniany względem tego poprzedniegomusi spełniać prawa lub nie, w zależności od podanej zmiennej {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
Jeśli zmienna {{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}}, 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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
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 kodu jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, 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. Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
2tx919iqniivtbv5ctmrz8pznk60of4
553077
553052
2026-08-24T02:22:16Z
Persino
2851
553077
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} - czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{LinkPatrz|tab_zmienne}},
* {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} - zmienne w nim do zerowania,
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Parametry funkcji zwracanej dla tekstu rozważanego {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
* {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} - numer znaku, po którym coś rozważamy,
* {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} - numer znaku, przed którym coś rozważamy.
Funkcja zwracana sprawdza, czy zmienne: {{LinkPatrz|liczba_koniec_naglowek}} i {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
A jeżeli jest jednak tak, tzn. spełniony jest jednak ten warunek, to znajduje taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
Następnie sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
Funkcja liczy ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} {{Patrz|p.CzyGeneralnieElementSpisuRzeczy}}, jeśli są takie elementy, to funkcja dodaje to do licznika {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
Jeśli liczba określona przez zmienną: {{LinkPatrz|ile_punktowanych}}, jeżeli jest co najmniej równa wyszukanym liniom {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Zerowanie się pewnych wartości:
Funkcja z tak policzonego {{LinkPatrz|str}} usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{LinkPatrz|czy_zeruj}}, która jest prawdziwa, a jeśli tak, to elementy zmiennej {{LinkPatrz|tab_zmienne}} są nilowane, tzn. podzmienne o kluczach:
* {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} - liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje,
* {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} - liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle okreslone kryteria, jest to dowolny artykuł,jaki może być w książce,
: Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkPatrz|p.CzyGeneralnieElementSpisuRzeczy}},
* {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} - wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
Ale niezależnie od wartości {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty. Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać,
* {{Code|liczba_obiekt_start_nowe}} - jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{linkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję, jest to pozycja taka na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst,
* {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} - numer znaku, od którego ma wyszukiwać od tytułu pewne linie,
* {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} - typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}},
* {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} - czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{LinkPatrz|liczba_start_rozdzial}},
* {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} - to nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
; Typy dopasowywania rozdziałów paarametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja {{LinkPatrz|AnalizowanieSekcjowe}} zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
; Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty{{dk}}
* {{Code|liczba_start_naglowek}} - początek ostatniego wyszukanego takiego nagłówka,
* {{Code|liczba_koniec_naglowek_poczt}} - koniec pierwszego wyszukanego nagłówka,
* {{Code|naglowek}} - wartość nagłówka dla tego ostatniego dopasowania,
* {{Code|poziom_naglowka}} - poziom takiego nagłówka,
; Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym{{dk}}
: Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie jest równa znakom odstępu i nie jest pusty:
* {{Code|liczba_start_naglowek_dalej}} - początek po pasującym tak nagłówku,
* {{Code|liczba_koniec_naglowek_dalej}} - a tutaj jego koniec,
* {{Code|naglowek_dalej}} - wartość tekstu napisu wprowadzenia tekstu,
* {{Code|poziom_naglowek_dalej}} - tutaj jego poziom.
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 wielu typów, ona wie, że w tekście może być równy układ nagłówków różnych typów.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu.
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami lub nie będące elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}. Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do sprawdzenia.
=== Ciąg dalszy opisu funkcji ===
; Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu
* Etap ogólny
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musiał.
; Etapy alternatywy
* Pierwszy etap
** To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka przed nim nie ma.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w pętli nieskończonej, najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
W każdym takim wywołaniu i dopasowaniu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
: Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych:
Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
* Drugi
** To dotyczy, że takiego dopasowania pasującego nie znalazł.
Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach, a jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}. Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieje artykuły bieżącej ksiązki, czy analizowanej, i czy to nie jest okładka, czy strona niedozwolona. Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
* Trzeci
** To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, a w każdym takim wywołaniu po jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
; Parametry wychodzące z funkcji{{dk}}
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
: Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
Wytłumaczenia parametrów zwracanych:
; Parametry określają ostatnie dopasowanie nagłówkowe w wewnątrz funkcji{{dk}}
* {{Code|liczba_start_naglowek}} - początek tego dopasowania,
* {{Code|liczba_koniec_naglowek}} - jego koniec,
* {{Code|naglowek}} - wartość napisu wprowadzenia tekstu nagłówka,
* {{Code|poziom_naglowka}} - poziom tego nagłówka.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''Stronicowego parsera''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów.
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 oętli nieskończnonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego wyodrębiona linia jest analizowana bez przerwy, jeżeli istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje parametry:
** {{Code|liczba_start}} {{Patrz|liczba_start}} - od której pozycji od tyłu ma wyszukiwać pozycje artykularne,
** {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} - czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego,
** {{Code|liczba_pierwszy_rozdzialowy_artykul}} - jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
* Początek takiego punktu, uzyskanym w końcu na końcowym obiektu pętli (wyjaśnienie w tekście),
* Liczba znaków odstępów wykrytych poczasz wszystkich obiektów pętli (jest to reprezzentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}),
* Czy ta tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}).
Etapy zwracania przez funkcję elementów:
; Uzyskanie linii według ogólnego wzoru
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linia, byłoby takie coś pomiędzy ewentualnie znakami nowymi liniami, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
; Początek i koniec uzyskanej linii według powyższego sposobu{{dk}}
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
; Brak dopasowania linii
* A jeżeli dopasowanie tej linii nie zgłasza niedopasowania, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
; Rozdział równaniowy{{dk}}
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa takich rozdziałów dopasowywać.Ma dopaasowywać tylko normalne linie niebędące pozycjami listy.
; Pierwsze rozgałęzenie specjalne instrukcji warunkowej{{dk}}
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. 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{{dk}}
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą.
; Przypadek istnienia, lub nie, rozdziału zerowego{{dk}}
* Jeśli znaleziono taki rozdział (zerowy), to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, to wtedy nie ma żadnych dodatkowych instrukcji do wykonania.
* Punkty zwracania zmiennych, jeśli przeciwnie do poprzedniego:
** Jeśli znaleziono taki spis, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma wartość początkowi takiej linii
** A jeżeli przeciwnie, nie ma w nim kodów, to końcowi, jeśli wyszukana linia nie jest rozdziałem z dwukropkiem na końcu, a jeśli jest, to początkowi tej linii,
*** Wtedy ją, tą uzyskaną z obliczeń, trzeba wliczać w ramach wydzielonego spisu, wtedy zmienna {{Code|czy_spis}} jest prawdą,
** A jeśli jednak ma je, wtedy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii w tej zmiennej, przeciwnie powtarzana jest ta wartość.
*** Wtedy, gdy linia nie ma takich artykułów, wtedy jeśli ona ma dwukropek na końcu, wtedy ustalamy zmienną {{Code|czy_spis}} na prawdę.
: 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 generowanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest {{LinkPatrz|dalszy_tekst}} w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
Funkcja wyszukuje w linii, ale najwierw w: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, a później w: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, jeżeli w poprzednim nie znalazł, pierwszego takiego linku przyporządkowagp, któremuś z tych obiektów, i przy pierwszym wykryciu zwraca wartość, ale dany obiekt uwwzględniany względem tego poprzedniegomusi spełniać prawa lub nie, w zależności od podanej zmiennej {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}.
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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_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}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty:
** {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} - czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą,
** {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} - czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki,
** {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - dalszy tekst, do przeszukiwania linkowego.
Funkcja zwraca wartość logiczną, jeżeli prawa linkowe tekstu są przyporządkowane przez zmienne: {{LinkPatrz|czy_nieoddzielone}} i {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazłeś takie linki, to zwracaj wartość prrawdziwą, a jeśli nie, to fałszywą.
Jeśli zmienna {{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}}, 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ę poczatkową 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:
* Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}},
* Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}},
* Dodatkowo funkcja przyjmuje dodatkowe wartości jako arguementy:
** {{Code|liczba_start_rozdzial}} - jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa,
** {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} - pozycja wyszukiwania początkowa.
Parametry zwracane:
* Pierwszy parametr:
** Pozycja, w którym taką pozycję określona przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono, takiej pozycji, to ta pozycja przymuje wartość początkową, adrugi parametr jest fałszem,
* Drugi parametr:
** Czy elementy są odzielone od sibie pewnymi znakami, według tej dokumentacji, i czy to są linki artykułów nieokładkowych dozwolonych, w najbliższej linii, wtedy zwraca w drugim parametrze prawdę, w przecciwnym wypadku, w przypadku znalezienia obiektu w najbliższej linii z: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, ale nie wykryto odpowiwdnich linków, według wspomnianej funkcji, wtedy zwracony ten paramtr będzie fałszem, kub do wyczerpania zasobów, też odpowiadającej fałśzowi,
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>
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}} oraz musi być spełniona alternatywa dwóch warunków: {{Code|przed_tekst}} {{Patrz|przed_tekst}} musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, 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. Jeśli ta funkcja zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróć 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 niepowoddzenia dopasowania, zwracana jest wartość ta początkowa, zdrugą 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>
kkgiufubp49q8vqyksr0r6iyd029bm5
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI
4
63921
552909
552819
2026-08-23T12:01:47Z
Persino
2851
552909
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu.
Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu.
Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}:
<syntaxhighlight lang="lua">
return liczba_koniec_szablon,norma_wzoru;
</syntaxhighlight>
Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób:
<syntaxhighlight lang="lua">
---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony;
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
</syntaxhighlight>
== {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} ==
Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst jest korygowany przez tą funkcję z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc.
Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Wartość zwracana:
* Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy.
Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={
[1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,},
[2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,},
};
</syntaxhighlight>
Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji.
Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}.
Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możeqmy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy.
To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję.
W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są:
* Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}:
<syntaxhighlight lang="lua">
p.szablony_przypisowe={
["Przypisy"]=true,
["Uwagi"]=true,
["Przypisy-lista"]=true,
};
</syntaxhighlight>
* Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ktzsbs92h36qnyj4u7j5wk5xd1pk3e0
552910
552909
2026-08-23T12:03:38Z
Persino
2851
/* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */
552910
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu.
Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu.
Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}:
<syntaxhighlight lang="lua">
return liczba_koniec_szablon,norma_wzoru;
</syntaxhighlight>
Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób:
<syntaxhighlight lang="lua">
---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony;
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
</syntaxhighlight>
== {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} ==
Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc.
Elementy bibliografii i literatury mieszczą się w pewnym zdefiniowanym rozdziale, który mieści się w spisie książki, i jest to pewien napis wprowadzenia tekstu z tym napisem, czego dotyczy, co usuwamy, czy zostawiamy, wraz z jego tekstem rozdziału, czyli jego zawartością, a to właśnie modyfikujemy, co powiedziano powyżej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Wartość zwracana:
* Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy.
Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={
[1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,},
[2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,},
};
</syntaxhighlight>
Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji.
Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}.
Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możeqmy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy.
To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję.
W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są:
* Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}:
<syntaxhighlight lang="lua">
p.szablony_przypisowe={
["Przypisy"]=true,
["Uwagi"]=true,
["Przypisy-lista"]=true,
};
</syntaxhighlight>
* Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7uaf4h9rzap86gjd3a9nv0uu7fbnt3x
552911
552910
2026-08-23T12:11:43Z
Persino
2851
/* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */
552911
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu.
Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu.
Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}:
<syntaxhighlight lang="lua">
return liczba_koniec_szablon,norma_wzoru;
</syntaxhighlight>
Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób:
<syntaxhighlight lang="lua">
---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony;
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
</syntaxhighlight>
== {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} ==
Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc.
Elementy bibliografii i literatury mieszczą się w 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, czy zostawiamy, w ich, wraz z ich tekstami rozdziału, czyli 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:
* {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Wartość zwracana:
* Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy.
Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={
[1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,},
[2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,},
};
</syntaxhighlight>
Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji.
Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego 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>
def8zk78wf0gq8hq7wzjdc780squq7b
552912
552911
2026-08-23T12:14:36Z
Persino
2851
/* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */
552912
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu.
Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu.
Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}:
<syntaxhighlight lang="lua">
return liczba_koniec_szablon,norma_wzoru;
</syntaxhighlight>
Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób:
<syntaxhighlight lang="lua">
---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony;
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
</syntaxhighlight>
== {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} ==
Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc.
Elementy bibliografii i literatury mieszczą się w 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:
* {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Wartość zwracana:
* Jest do zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury,w którym usuwaliśmy pewne elementy.
Ten wzor do wydzielania tekstu z drugą wartością logiczną jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={
[1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,},
[2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,},
};
</syntaxhighlight>
Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji.
Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego od pierwszej pozycji tego 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>
0coyf0tfwxoysq9yfjskvme0actru0f
552913
552912
2026-08-23T12:17:46Z
Persino
2851
/* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */
552913
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu.
Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jej numeru: {{Code|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu.
Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}:
<syntaxhighlight lang="lua">
return liczba_koniec_szablon,norma_wzoru;
</syntaxhighlight>
Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób:
<syntaxhighlight lang="lua">
---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony;
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
</syntaxhighlight>
== {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} ==
Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego. Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc.
Elementy bibliografii i literatury mieszczą się w 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:
* {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Wartość zwracana:
* Jest 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.
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>
pfk2aml31oc2vxohpf2nfxmavmdv4wq
552965
552913
2026-08-23T16:00:44Z
Persino
2851
/* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */
552965
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - 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 ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu.
Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jej 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:
* {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
Wartość zwracana:
* Jest 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.
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>
8tfstzbv3p0m24na9bxo38d4zg7vzma
552966
552965
2026-08-23T16:02:44Z
Persino
2851
/* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */
552966
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - 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 ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu.
Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jej 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:
* {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}},
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
Wartość zwracana:
* 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.
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>
bbnvawnyltw1hts8tqhg1ih60qrcwy0
552982
552966
2026-08-23T16:31:31Z
Persino
2851
/* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */
552982
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - 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 ze specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy tej funkcji, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji. Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia i znajdowania tej nazwy, a więc tego szablonu.
Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jej 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:
* {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Wartość zwracana:
* 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.
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>
hsp43l8eg6p8txoaeh6aleevkywhhwa
553024
552982
2026-08-23T21:43:27Z
Persino
2851
/* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */
553024
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:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|liczba_start}} - jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - 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.
Te kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jej 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:
* {{Code|tekst}} {{Patrz|tekst}} - część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* {{Code|tab_wzor}} {{Patrz|tab_wzor}} - tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście {{LinkPatrz|tekst}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
Wartość zwracana:
* 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.
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>
8x0uc72vwzebrmaheuwxplawsggvg1q
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII
4
63922
552929
552895
2026-08-23T13:34:49Z
Persino
2851
/* Znajdowanie pierwszego artykułu książki */
552929
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} ==
Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisum, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treśvi. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji wydzielonego spisu.
=== Parametry funkcji ===
Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
=== Parametry zwracane ===
* Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika).
<syntaxhighlight lang="lua">
---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu;
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli;
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji;
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
---- Zwracanie wydzielonego i skorygowanego spisu treści;
return tekst;
</syntaxhighlight>
=== Wydzielanie właściwego spisu treści, liczenie punktów granicznych ===
Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}.
==== Punkt startowy ====
Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję.
===== Znajdowanie pierwszego artykułu książki =====
Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła:
<syntaxhighlight lang="lua">
---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania:
---- lista_szablon,
---- odstepy_poczatku_rozdzialu,
---- przerwa_szablon,,
---- obiekt_szablon,
---- kod_szablon,
---- dalszy_tekst;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
---- Uruchomienie nieskończonej petli wyszukiwania, która wewwnętrznie zostanie zakończona;
while(true)do
---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję;
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
</syntaxhighlight>
Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są:
* {{Code|lista_szablon}} {{Patrz|lista_szablon}} - odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale,
* {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} - jest to cią odstępów bez znaku nowej linii {{Code|\n}},
* {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} - elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdowwać się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego,
* {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} - jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}},
* {{Code|kod_szablon}} {{Patrz|kod_szablon}} - numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią;
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - jest to dalszy kod, za pierwszym takim zauważalnym kodzie, modułu: {{Code|{{m|Szablonowe}}}}.
====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ======
Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znaajdować kolejne możliwości:
* Pozycje akceptowalne przez funkcje listy:
** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{LinkPatrz|lista_szablon}}, i pustym: {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu,
** Pozycje listy, gdzie: {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}},
** Dowolna lista dwukropkowa, czyli {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}},
* Początkowe znaki linii dalszego tekstu {{LinkPatrz|dalszy_tekst}}, tzn: nie jest {{Code|>}}, gdy: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|przerwa_szablon}}, są puste,
* Dowolny rozdział równaniowy dodatni, gdy zmienne: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a {{LinkPatrz|dalszy_tekst}}, końcy się też na to.
; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}}
Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy {{LinkPatrz|obiekt_szablon}} i {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody linków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, szukamy w ich zawartości elementów, tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. W ten sposób znaleźliźmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}.
==== Punkt końcowy ====
==== Wydzielanie spisu właściwego ====
===== Korekcja uzyskanego wyniku =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3zwytpy5xasewyz7imphjwk03pfbn3y
552930
552929
2026-08-23T13:36:25Z
Persino
2851
/* {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} */
552930
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} ==
Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu.
=== Parametry funkcji ===
Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
=== Parametry zwracane ===
* Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika).
<syntaxhighlight lang="lua">
---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu;
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli;
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji;
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
---- Zwracanie wydzielonego i skorygowanego spisu treści;
return tekst;
</syntaxhighlight>
=== Wydzielanie właściwego spisu treści, liczenie punktów granicznych ===
Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}.
==== Punkt startowy ====
Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję.
===== Znajdowanie pierwszego artykułu książki =====
Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła:
<syntaxhighlight lang="lua">
---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania:
---- lista_szablon,
---- odstepy_poczatku_rozdzialu,
---- przerwa_szablon,,
---- obiekt_szablon,
---- kod_szablon,
---- dalszy_tekst;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
---- Uruchomienie nieskończonej petli wyszukiwania, która wewwnętrznie zostanie zakończona;
while(true)do
---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję;
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
</syntaxhighlight>
Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są:
* {{Code|lista_szablon}} {{Patrz|lista_szablon}} - odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale,
* {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} - jest to cią odstępów bez znaku nowej linii {{Code|\n}},
* {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} - elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdowwać się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego,
* {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} - jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}},
* {{Code|kod_szablon}} {{Patrz|kod_szablon}} - numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią;
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - jest to dalszy kod, za pierwszym takim zauważalnym kodzie, modułu: {{Code|{{m|Szablonowe}}}}.
====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ======
Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znaajdować kolejne możliwości:
* Pozycje akceptowalne przez funkcje listy:
** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{LinkPatrz|lista_szablon}}, i pustym: {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu,
** Pozycje listy, gdzie: {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}},
** Dowolna lista dwukropkowa, czyli {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}},
* Początkowe znaki linii dalszego tekstu {{LinkPatrz|dalszy_tekst}}, tzn: nie jest {{Code|>}}, gdy: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|przerwa_szablon}}, są puste,
* Dowolny rozdział równaniowy dodatni, gdy zmienne: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a {{LinkPatrz|dalszy_tekst}}, końcy się też na to.
; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}}
Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy {{LinkPatrz|obiekt_szablon}} i {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody linków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, szukamy w ich zawartości elementów, tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. W ten sposób znaleźliźmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}.
==== Punkt końcowy ====
==== Wydzielanie spisu właściwego ====
===== Korekcja uzyskanego wyniku =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
av9jtefk5ywvrnji0fxnjfdmoydm6yr
552931
552930
2026-08-23T13:37:40Z
Persino
2851
/* Znajdowanie pierwszego artykułu książki */
552931
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} ==
Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu.
=== Parametry funkcji ===
Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom II}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}.
=== Parametry zwracane ===
* Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika).
<syntaxhighlight lang="lua">
---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu;
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli;
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji;
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
---- Zwracanie wydzielonego i skorygowanego spisu treści;
return tekst;
</syntaxhighlight>
=== Wydzielanie właściwego spisu treści, liczenie punktów granicznych ===
Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}.
==== Punkt startowy ====
Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję.
===== Znajdowanie pierwszego artykułu książki =====
Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła:
<syntaxhighlight lang="lua">
---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania:
---- lista_szablon,
---- odstepy_poczatku_rozdzialu,
---- przerwa_szablon,
---- obiekt_szablon,
---- kod_szablon,
---- dalszy_tekst;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
---- Uruchomienie nieskończonej petli wyszukiwania, która wewwnętrznie zostanie zakończona;
while(true)do
---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję;
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
</syntaxhighlight>
Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są:
* {{Code|lista_szablon}} {{Patrz|lista_szablon}} - odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale,
* {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} - jest to cią odstępów bez znaku nowej linii {{Code|\n}},
* {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} - elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdowwać się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego,
* {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} - jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}},
* {{Code|kod_szablon}} {{Patrz|kod_szablon}} - numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią;
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - jest to dalszy kod, za pierwszym takim zauważalnym kodzie, modułu: {{Code|{{m|Szablonowe}}}}.
====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ======
Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znaajdować kolejne możliwości:
* Pozycje akceptowalne przez funkcje listy:
** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{LinkPatrz|lista_szablon}}, i pustym: {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu,
** Pozycje listy, gdzie: {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}},
** Dowolna lista dwukropkowa, czyli {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}},
* Początkowe znaki linii dalszego tekstu {{LinkPatrz|dalszy_tekst}}, tzn: nie jest {{Code|>}}, gdy: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|przerwa_szablon}}, są puste,
* Dowolny rozdział równaniowy dodatni, gdy zmienne: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a {{LinkPatrz|dalszy_tekst}}, końcy się też na to.
; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}}
Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy {{LinkPatrz|obiekt_szablon}} i {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody linków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, szukamy w ich zawartości elementów, tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. W ten sposób znaleźliźmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}.
==== Punkt końcowy ====
==== Wydzielanie spisu właściwego ====
===== Korekcja uzyskanego wyniku =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sw0io3c64shkqzu01qplbw4kyiks20d
552967
552931
2026-08-23T16:04:59Z
Persino
2851
/* Parametry funkcji */
552967
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} ==
Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu.
=== Parametry funkcji ===
Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Najczęstsze parametry|StronicowyParser/AnalizaSpisuRzeczy}}.
=== Parametry zwracane ===
* Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika).
<syntaxhighlight lang="lua">
---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu;
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli;
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji;
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
---- Zwracanie wydzielonego i skorygowanego spisu treści;
return tekst;
</syntaxhighlight>
=== Wydzielanie właściwego spisu treści, liczenie punktów granicznych ===
Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}.
==== Punkt startowy ====
Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję.
===== Znajdowanie pierwszego artykułu książki =====
Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła:
<syntaxhighlight lang="lua">
---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania:
---- lista_szablon,
---- odstepy_poczatku_rozdzialu,
---- przerwa_szablon,
---- obiekt_szablon,
---- kod_szablon,
---- dalszy_tekst;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
---- Uruchomienie nieskończonej petli wyszukiwania, która wewwnętrznie zostanie zakończona;
while(true)do
---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję;
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
</syntaxhighlight>
Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są:
* {{Code|lista_szablon}} {{Patrz|lista_szablon}} - odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale,
* {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} - jest to cią odstępów bez znaku nowej linii {{Code|\n}},
* {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} - elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdowwać się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego,
* {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} - jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}},
* {{Code|kod_szablon}} {{Patrz|kod_szablon}} - numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią;
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - jest to dalszy kod, za pierwszym takim zauważalnym kodzie, modułu: {{Code|{{m|Szablonowe}}}}.
====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ======
Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znaajdować kolejne możliwości:
* Pozycje akceptowalne przez funkcje listy:
** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{LinkPatrz|lista_szablon}}, i pustym: {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu,
** Pozycje listy, gdzie: {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}},
** Dowolna lista dwukropkowa, czyli {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}},
* Początkowe znaki linii dalszego tekstu {{LinkPatrz|dalszy_tekst}}, tzn: nie jest {{Code|>}}, gdy: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|przerwa_szablon}}, są puste,
* Dowolny rozdział równaniowy dodatni, gdy zmienne: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a {{LinkPatrz|dalszy_tekst}}, końcy się też na to.
; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}}
Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy {{LinkPatrz|obiekt_szablon}} i {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody linków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, szukamy w ich zawartości elementów, tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. W ten sposób znaleźliźmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}.
==== Punkt końcowy ====
==== Wydzielanie spisu właściwego ====
===== Korekcja uzyskanego wyniku =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qkc59dsq0muzoauvdvigejud7zy5dzh
552975
552967
2026-08-23T16:20:50Z
Persino
2851
/* Parametry funkcji */
552975
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} ==
Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu.
=== Parametry funkcji ===
Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
* Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.
=== Parametry zwracane ===
* Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika).
<syntaxhighlight lang="lua">
---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu;
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli;
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji;
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
---- Zwracanie wydzielonego i skorygowanego spisu treści;
return tekst;
</syntaxhighlight>
=== Wydzielanie właściwego spisu treści, liczenie punktów granicznych ===
Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}.
==== Punkt startowy ====
Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję.
===== Znajdowanie pierwszego artykułu książki =====
Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła:
<syntaxhighlight lang="lua">
---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania:
---- lista_szablon,
---- odstepy_poczatku_rozdzialu,
---- przerwa_szablon,
---- obiekt_szablon,
---- kod_szablon,
---- dalszy_tekst;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
---- Uruchomienie nieskończonej petli wyszukiwania, która wewwnętrznie zostanie zakończona;
while(true)do
---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję;
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
</syntaxhighlight>
Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są:
* {{Code|lista_szablon}} {{Patrz|lista_szablon}} - odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale,
* {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} - jest to cią odstępów bez znaku nowej linii {{Code|\n}},
* {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} - elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdowwać się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego,
* {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} - jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}},
* {{Code|kod_szablon}} {{Patrz|kod_szablon}} - numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią;
* {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} - jest to dalszy kod, za pierwszym takim zauważalnym kodzie, modułu: {{Code|{{m|Szablonowe}}}}.
====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ======
Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znaajdować kolejne możliwości:
* Pozycje akceptowalne przez funkcje listy:
** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{LinkPatrz|lista_szablon}}, i pustym: {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu,
** Pozycje listy, gdzie: {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}},
** Dowolna lista dwukropkowa, czyli {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}},
* Początkowe znaki linii dalszego tekstu {{LinkPatrz|dalszy_tekst}}, tzn: nie jest {{Code|>}}, gdy: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|przerwa_szablon}}, są puste,
* Dowolny rozdział równaniowy dodatni, gdy zmienne: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a {{LinkPatrz|dalszy_tekst}}, końcy się też na to.
; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}}
Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy {{LinkPatrz|obiekt_szablon}} i {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody linków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, szukamy w ich zawartości elementów, tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. W ten sposób znaleźliźmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}.
==== Punkt końcowy ====
==== Wydzielanie spisu właściwego ====
===== Korekcja uzyskanego wyniku =====
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
j2q0ss6rsgo7tbda0ibcba6t5i7joxk
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy
4
63923
552938
552807
2026-08-23T14:24:47Z
Persino
2851
552938
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Najczęściej używane parametry ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Najczęstsze parametry}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sp0ywty1u4apf08up48hmzndvsm2v34
552939
552938
2026-08-23T14:25:06Z
Persino
2851
/* Parametry tekstu */
552939
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Najczęściej używane parametry ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Najczęstsze parametry}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rxgwhazsnbxp6padi0rgmelxu2wtwa4
552940
552939
2026-08-23T14:27:57Z
Persino
2851
552940
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Używane kody}},używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} -numer kodu w danego rodzaju.
== Najczęściej używane parametry ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Najczęstsze parametry}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4vds66a43hpum91arydcxnu7qurnsx8
552941
552940
2026-08-23T14:30:32Z
Persino
2851
552941
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Używane kody}},używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} -numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* {{Code|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Używane kody}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Najczęściej używane parametry ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Najczęstsze parametry}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
76acifetprhrvcf1uw720gycn2pqp3p
552947
552941
2026-08-23T14:42:02Z
Persino
2851
552947
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Używane kody}},używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} -numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Używane kody}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Najczęściej używane parametry ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Najczęstsze parametry}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
e7e4lx23ldennzzeovqledg4acxm47h
552968
552947
2026-08-23T16:09:22Z
Persino
2851
/* Najczęściej używane parametry */
552968
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Używane kody}},używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} -numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Używane kody}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fsmonh6tj26axffjawy4q163jcd40ze
552969
552968
2026-08-23T16:10:14Z
Persino
2851
/* Elementy kodu */
552969
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Używane elemeny kodu bazy Szablonowe}},używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} -numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Używane kody}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1d5e0419kh0hp7gvvklf7h3qr53x5iu
552970
552969
2026-08-23T16:10:44Z
Persino
2851
/* Elementy złożone z rodzaju kodu i jego numeru */
552970
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Używane elemeny kodu bazy Szablonowe}},używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} -numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Używane elemeny kodu bazy Szablonowe}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
spg98ls8vjpcdhdw24xejseh3qw0h0k
552971
552970
2026-08-23T16:12:52Z
Persino
2851
552971
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}},używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} -numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Używane elemeny kodu bazy Szablonowe}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lfbrm4vflm82q4mnyfmq7yrsg6h27o7
552972
552971
2026-08-23T16:13:26Z
Persino
2851
552972
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}},używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} -numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hol8fuuspp3xmoajp51fd2y3lstpom8
552974
552972
2026-08-23T16:17:52Z
Persino
2851
552974
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}},używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
8w9rswf91r37sq3066geu3yi8jmgacd
552976
552974
2026-08-23T16:24:16Z
Persino
2851
552976
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rml02bt4q4nmv0awcodsw212sf04ya0
552977
552976
2026-08-23T16:25:58Z
Persino
2851
/* Elementy złożone z rodzaju kodu i jego numeru */
552977
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* Parametry uzyskane {{ZobaczTeż|Parametry uzyskane}}
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r417hcrdvyzw607mckz56rcxjhynlee
552978
552977
2026-08-23T16:26:55Z
Persino
2851
/* Elementy złożone z rodzaju kodu i jego numeru */
552978
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* Parametry uzyskane {{ZobaczTeż|Parametry zawartości kodów}}
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pexzdparl63ux8vxlz3j7zp68za8ksl
552979
552978
2026-08-23T16:27:30Z
Persino
2851
/* Elementy złożone z rodzaju kodu i jego numeru */
552979
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
* Parametry uzyskane {{ZobaczTeż|Parametry złożone}}
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
s2snusib600ra2bapez8emq7hpmpfyu
552983
552979
2026-08-23T16:33:32Z
Persino
2851
/* Elementy złożone z rodzaju kodu i jego numeru */
552983
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
Parametry uzyskane {{ZobaczTeż|Parametry złożone}}:
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r4zrmoycre63oe8emnieky3lxs5ax8h
552984
552983
2026-08-23T16:34:23Z
Persino
2851
552984
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Parametry tekstu ==
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
== Elementy kodu ==
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
== Elementy złożone z rodzaju kodu i jego numeru ==
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
== Parametry zakodowanego spisu ==
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9w2rigrhoj1wbws0ah99x03x53vl9h6
552985
552984
2026-08-23T16:36:21Z
Persino
2851
552985
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
=== Elementy kodu ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}},
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qv70cd61tf599nfnnoab67tr2dn4ser
552991
552985
2026-08-23T17:14:50Z
Persino
2851
/* Argumenty (zmienne) wstawiane do różnych funkcji */
552991
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
=== Elementy kodu ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
** Parametry tabele potrzebne przez funkcję {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią:
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego,
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nqath1vcspv998bz8zfkt8hthn0a7iz
552992
552991
2026-08-23T17:15:13Z
Persino
2851
/* Parametry zakodowanego spisu */
552992
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
=== Elementy kodu ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* Parametry tabele potrzebne przez funkcję {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią:
** {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego,
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
k7dk1ooubzhmwr2t6n1kfeufmtt1viw
552994
552992
2026-08-23T17:23:46Z
Persino
2851
/* Elementy kodu */
552994
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''.
Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porządku, ale kolejność sie liczy, tzn. do przodu lub wsteczna.
Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jak są znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne.
== Argumenty (zmienne) wstawiane do różnych funkcji ==
=== Parametry tekstu ===
Są to elementy części i całości kodu zakodowanego artykułu {{ZobaczTeż|Podstawowe parametry}}:
* {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, umieszczona pomiędzy znakami nowej linii lub elementami końca i początku łańcucha znakowego,
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, całości zakodowanego artykułu.
=== Elementy kodowania kodów różnych obiektów ===
Elementy różnych kodów to {{ZobaczTeż|Parametry kodowania}}, używane w tabeli bazy {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}:
* {{Code|obiekt}} {{Patrz|obiekt}} - rodzaj kkodu w bazie danych zakodowanego tekstu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu w danego rodzaju.
=== Elementy złożone z rodzaju kodu i jego numeru ===
Parametry uzyskane {{ZobaczTeż|Parametry złożone}} przy pomocy tabel z innych elementów:
* {{Code|szablon}} {{Patrz|szablon}} - element złożony z elementów: {{LinkZobaczTeż|Parametry kodowania}}, przy użyciu tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
=== Parametry zakodowanego spisu ===
Są to elementy parametrów strony zakodowanego spisu {{ZobaczTeż|Parametry zakodowanego spisu}}:
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''',
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością może być wartość pusta,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa spisu w wersji szablonowej, bez przestrzeni nazw {{Np|Template|link=tak}}, dla przestrzeni {{Np|(main)|link=tak}}, jest z dwukropkiem na początku,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tabela bazy danych zakodowanego tekstu, dla różnych obiektów {{LinkPatrz|obiekt}} z róznymi numerami elementów w nim {{LinkPatrz|kod}}
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica niektórych, nie wszystkich, przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji,
* Parametry tabele potrzebne przez funkcję {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, używane przez nią:
** {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego,
== Spis treści ==
Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi:
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - do przeszukiwania ciągów znakowych podanych w tekście lub wewnątrz linii, w postaci przechwytywanych ciągów znakowych (ich jest maksymalnie dziewięć), one zwracają początek i koniec ostatniego dopasowania według kryteriów, w postaci pierwszy elementów zwracanych, dalsze elementy, to są przechwytywania, zdefiniowane bezpośrednio we wzoru wyszukiwania w postaci nawiasów okrągłych, tak są zaznaczane takie elementy,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem, to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} - wyszukujące rozdziały lub w samym nagłówku, które mają odpowiednie lub nie zawartości, takiego pierwszego, od tyłu, lub do przodu,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} - dotyczące wyszukiwania sekcji na zakodowanym tekście strony, w tym również linkowych, warunków znajdowania kolejnych rozdziałów w wikikodzie, jakie nagłówki wyszukiwać, jakie muszą spełniać rozwiązania,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} - są do korygowania pozycji końca spisu treści wydzielonej z zakodowanej treści artykułu (strony), by ona mieściła się wraz z licencją (z szablonem: {{s|Licencja}}), lub wydzielania spisu treści, co do napisu wprowadzenia tekstu i jego tekstu rozdziału, o nagłówkach: '''Bibliografia''' i '''Literatura''', niezależnie jak są znormowane,
* {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
tujeixdlzkmgy3xgrcszwdkczbz1i7i
Moduł:StronicowyParser/Pomocne
828
63964
552954
552868
2026-08-23T15:42:49Z
Persino
2851
552954
Scribunto
text/plain
local p={};
p["SkrótDoNumeruOdnośnika"]=function(__nazwa_bazowa_strony,__nazwa_modulu)
local techniczne_modul=require("Module:Techniczne");
local nazwy_modul=require("Module:Nazwy");
local strona;
repeat
local nazwa_bazowa_strony=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](__nazwa_bazowa_strony);
strona,ile=mw.ustring.gsub(__nazwa_modulu,"^"..nazwa_bazowa_strony.."/","");
if(ile==0)then
local _,ile_kresek=mw.ustring.gsub(__nazwa_bazowa_strony,"/",function()return;end);
__nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](__nazwa_bazowa_strony);
end;
until((ile>0)or(ile_kresek==0));
local zrostek;
local ksiazka,podstrona,artykul=mw.ustring.match(strona,"^([^/]*)/(.*)/([^/]*)$");
if(ksiazka and podstrona and artykul)then
ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end);
artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
zrostek=ksiazka..podstrona..artykul;
else
local ksiazka,artykul=mw.ustring.match(strona,"^([^/]*)/([^/]*)$");
if(ksiazka and artykul)then
ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
zrostek=ksiazka..artykul;
else
zrostek=mw.ustring.gsub(strona,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
end;
end;
return zrostek;
end;
p["SkrótDoNumeruOdnośnikaDołączonejKsiążki"]=function(nazwa_ksiazki)
nazwa_ksiazki=mw.ustring.gsub(nazwa_ksiazki,"^.-:%s*","");
local ksiazka=mw.ustring.gsub(nazwa_ksiazki,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak);end);
local ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%s+","%1");
return ksiazka;
end;
return p;
fgwwafwehhjh713v4nah53049imr9pp
552990
552954
2026-08-23T17:07:44Z
Persino
2851
552990
Scribunto
text/plain
local p={};
p["SkrótDoNumeruOdnośnika"]=function(__nazwa_bazowa_strony,__nazwa_modulu)
local techniczne_modul=require("Module:Techniczne");
local nazwy_modul=require("Module:Nazwy");
local strona;
repeat
local ile;local ile_kresek;
local nazwa_bazowa_strony=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](__nazwa_bazowa_strony);
strona,ile=mw.ustring.gsub(__nazwa_modulu,"^"..nazwa_bazowa_strony.."/","");
if(ile==0)then
local _;
_,ile_kresek=mw.ustring.gsub(__nazwa_bazowa_strony,"/",function()return;end);
__nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](__nazwa_bazowa_strony);
end;
until((ile>0)or((ile_kresek)and(ile_kresek==0)));
local zrostek;
local ksiazka,podstrona,artykul=mw.ustring.match(strona,"^([^/]*)/(.*)/([^/]*)$");
if(ksiazka and podstrona and artykul)then
ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
podstrona=mw.ustring.gsub(podstrona,"([%u%l])[^/]*/?",function(znak)return mw.ustring.upper(znak)..".";end);
artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
zrostek=ksiazka..podstrona..artykul;
else
local ksiazka,artykul=mw.ustring.match(strona,"^([^/]*)/([^/]*)$");
if(ksiazka and artykul)then
ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
artykul=mw.ustring.gsub(artykul,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
zrostek=ksiazka..artykul;
else
zrostek=mw.ustring.gsub(strona,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak)..".";end);
end;
end;
return zrostek;
end;
p["SkrótDoNumeruOdnośnikaDołączonejKsiążki"]=function(nazwa_ksiazki)
nazwa_ksiazki=mw.ustring.gsub(nazwa_ksiazki,"^.-:%s*","");
local ksiazka=mw.ustring.gsub(nazwa_ksiazki,"([%u%l])%l+[%u%l]*%p*%s*",function(znak)return mw.ustring.upper(znak);end);
local ksiazka=mw.ustring.gsub(ksiazka,"([%u%l])%s+","%1");
return ksiazka;
end;
return p;
l2k5k3ds5oaqy4t9w89f2v1kv1tsjek
Wikibooks:Moduły/Parametry/Tom I
4
63967
553027
2026-08-23T22:16:06Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje liczb elementów w tabeli lub szablonów, w wersji mnogiej lub normalnej. == {{Code|p["LiczbaElementówNumerowanychTablicy"]}} == Funkcja liczy liczbę nume…”
553027
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje liczb elementów w tabeli lub szablonów, w wersji mnogiej lub normalnej.
== {{Code|p["LiczbaElementówNumerowanychTablicy"]}} ==
Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych, czy nie. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}.
Funkcja z użytym parametrem {{Code|mnoga}} z wartością {{Code|true}} jest taka, że zawsze zwracana jest wartość {{Code|2}} przez nią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|9}}, ponieważ ma on mnóstwo parametrów nienazwanych, które jednocześnie są numerowane, czyli są one od {{Code|1}} i ciągną się bez przerw, aż do pewnej liczby.
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych.
== {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} ==
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
<syntaxhighlight lang="lua">
p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusta.
Odpowiednikiem zmiennej {{Code|tabela}}:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów numerowanych niepustych, tzn. gdy ten parametr jest podany od, a elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Powyższa funkcja zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów.
Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją.
== {{Code|p["LiczbaElementówNienazwanychTablicy"]}} ==
Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}},
* {{Code|mnoga}} - czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej.
Funkcja z użytym parametrem {{Code|mnoga}} z wartością {{Code|true}} jest taka, że zawsze zwracana jest wartość {{Code|2}} przez nią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false);
</syntaxhighlight>
Wynik tej funkcji jest {{Code|4}}, bo taka jest liczba parametrów nienazwanych, ale nie numerowanych.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych.
== {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} ==
Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end;
</syntaxhighlight>
Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno:
* {{Code|niepuste}} - czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty,
* {{Code|mnoga}} - czy liczba takich wyszukań jest mnoga, jeżeli niepusty.
Odpowiednikiem parametru {{Code|tabela}} jest:
* {{Code|frame:getParent().args}} - czyli parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu.
Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}}
</syntaxhighlight>
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu to ustawienie w dziecku, jako liczbę {{Code|2}}.
== {{Code|p["LiczbaElementówTablicy"]}} ==
Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy, a jeżeli parametr: {{Code|wliczac}}, jest podany, to liczy elementy, które nie są nie o zawartości niepustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela do rozważań na problemy tej funkcji,
* {{Code|wliczac}} - czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={ 10, nazwa = 5, parametr = "tak", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true);
</syntaxhighlight>
Policzona liczba elementów {{Code|liczba_elementow_tablicy}} jest {{Code|3}}.
Powyższa funkcja liczy liczbę wszystkich parametrów niepustych w podanej tablicy.
== {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} ==
Funkcja liczy liczbę nienazwanych od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych.
Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, a jeżeli nie jest taka, to wtedy {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu. Należy wskazać funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami numerkowymi, a jezeli nie są takie, to one muszą być w postaci czystych liczb, a w przypadku form, które po przekształceniu na liczbę funkcją {{Code|tonumber}} stają się normalnymi liczbami {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, na którym operujemy,
* {{Code|przedrostek}} - niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą,
* {{Code|wliczac}} - czy szukamy niepuste elementy numerowane tabeli,
* {{Code|czy_formy_numerkowe}} - czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", };
local parametry_modul=require("Module:Parametry");
local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false);
</syntaxhighlight>
Funkcja w postaci wartości {{Code|liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy}} zwróci liczbę {{Code|6}}.
Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych, z przedrostkiem lub nie, ale nie czysto numerkowych, ale również numerkowych (szeregi).
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hrjr7tc7pts50eulv9sb8hh6cwj56wk
Wikibooks:Moduły/Parametry/Tom II
4
63968
553028
2026-08-23T22:19:49Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje liczenia minimalnej i maksymalnej wartości w tabeli lub szablonie. == {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} == Funkcja wywołana w ramce…”
553028
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje liczenia minimalnej i maksymalnej wartości w tabeli lub szablonie.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje, jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w którym on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MaksymalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|10=nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|20}}, ponieważ ta nazwa (klucz) parametru jest największa.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MaksymalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MaksymalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy maksymalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie, przerwy, nie zawsze zaczynający się od jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, w nim elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local maksymalna_wartosc_parametru_nienazwanego=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|maksymalna_wartosc_parametru_nienazwanego}} równej: {{Code|20}}.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoSzablonu}} ==
Funkcja wywołana w ramce szablonu, który może nawet liczyć, i nie tylko, parametry niepuste, jeżeli to w nim wskazano w ramce dziecka szablonu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MaksymalnaLiczbaParametruNienazwanegoSzablonu=function(frame)...end;
</syntaxhighlight>
Funkcja ma parametry, które przyjmuje jako parametry dziecka ramki, też zbiera zmienne rodzica:
* {{Code|niepuste}} - niepuste, wtedy w liczy tylko elementy szablonu niepuste, tylko je wykorzystuje do rozważań,
* {{Code|frame:getParent().args}} - parametry szablonu rodzica dziecka ramki, w której on został wywołany.
Przykład wywołania ramki dziecka w szablonie rodzica jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|MinimalnaLiczbaParametruNienazwanegoSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|4=nazwa1|5=nazwa2|150nazwa3|20=nazwa4}}
</syntaxhighlight>
Szablon zrzuci liczbę {{Code|4}}, ponieważ ta nazwa parametru najmniejsza.
Funkcja wykorzystuje do swojego działania: {{Code|{{sr|#p.MinimalnaLiczbaParametruNienazwanegoTablicy|p=Parametry}}}}, który robi to samo, co podana funkcja, tylko jest inne obrazowanie zmiennych.
== {{Code|p.MinimalnaLiczbaParametruNienazwanegoTablicy}} ==
Funkcja liczy minimalny numer parametru nienazwanego, określony liczbą, mający w sobie, niekoniecznie mający przerwy, nie zawsze zaczynający się od jedynki, nie zawsze zaczynający się jedynki.
Jeżeli funkcja nie znalazłażadnego takiego elementu, to zwracana wtedy jest wartość {{Code|1}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.MinimalnaLiczbaParametruNienazwanegoTablicy=function(tabela, wliczac)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|wliczac}} - czy ma uwzględniać w swoich rozważaniach, podczas liczenia podanej tabeli, jego elementy niepuste.
Przykładem wywołania jest dla parametrów niepustych tablicy:
<syntaxhighlight lang="lua">
local tabela={[4]="nazwa1",[5]="nazwa2",[10]="nazwa3",[20]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc_parametru_nienazwanego=parametry_modul.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,true);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrze: {{Code|minimalna_wartosc_parametru_nienazwanego}} równej: {{Code|4}}.
== {{Code|p.MinimalnyIMaksymalnyNumerParametru}} ==
Funkcja liczy minimalny i maksymalny numer parametru nazwanego, o pewnej podanej podstawie, numerowany liczbą po spacji, będąca liczbą naturalną, lub bez numerka, numerowanie tych argumentów może mieć przerwy, może liczyć jako od {{Code|0}} lub {{Code|1}}, w zależności od drugiego argumentu.
Jeśli funkcja nie znalazła zadnego takiego elementu, to wtedy dwie wartości, zwracane przez tę funkcję, minimalna przyjmuje wartość {{Code|1}}, a maksymalna {{Code|0}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.MinimalnyIMaksymalnyNumerParametru(tabela,nazwa_parametru_okreslona, czy_od_zera)...end;
</syntaxhighlight>
Funkcja ma zmienne, które przyjmuje w wywołaniu funkcyjnym:
* {{Code|tabela}} - rozważana tabela, podana jako pierwszy argument funkcji,
* {{Code|nazwa_parametru_okreslona}} - podstawa parametrów numerowanych, np. mogący być: {{Code|nazwa 1}},
* {{Code|czy_od_zera}} - czy parametr bez numerka ma liczyć jako {{Code|0}}, jeśli {{Code|true}}, w przeciwnym wypadku jest liczony on jako {{Code|1}}.
Przykładem wywołania jest dla parametrów o nazwach niepustych w tablicy:
<syntaxhighlight lang="lua">
local tabela={["nazwa 4"]="tak",["nazwa 5"]="tak",["nazwa 10"]="tak",["nazwa 20"]="tak",};
local parametry_modul=require("Module:Parametry");
local minimalna_wartosc,maksymalna_wartosc=parametry_modul.MinimalnyIMaksymalnyNumerParametru(tabela,"nazwa",false);
</syntaxhighlight>
Funkcja zwróci wynik o wartości, w parametrach: {{Code|minimalna_wartosc}} i {{Code|maksimum_wartosc}}, mający kolejno wartości liczbowe: {{Code|4}} i {{Code|20}}. Jest to minmalna i maksymalna wartość dla liczb po spacji siedzące przy podstawach parametrów, która jest podana w parametrze drugim funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r46kgxj5g1yfz5fvbg16g17b7crvbea
Wikibooks:Moduły/Parametry/Tom III
4
63969
553029
2026-08-23T22:24:05Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje, liczące, czy są takie parametry. Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowo funkcyjnych {{Code|…”
553029
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje, liczące, czy są takie parametry.
Poniższe funkcje zwracają {{Code|tak}} w ramce szablony, w przypadku wersji szablonowych, a typowo funkcyjnych {{Code|true}}, gdy coś znaleziono, gdy nic, to wartość języka {{lpg|Lua}}, czyli: {{Code|nil}}, w drugim przypadku, co odpowiada w odpowiednikach uruchamianych w ramce szablonu wartości pustej {{Code|""}}, lub {{Code|false}}, w tym drugim przypadku.
== {{Code|p["CzySąParametryNumerowaneSzablonu"]}} ==
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy numerowane, tzn. od {{Code|1}} bez przerw, ale z końcem, lub do jej pierwszej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNumerowaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ istnieją jakieś parametry numerowane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
== {{Code|p["CzySąElementyNumerowaneTablicy"]}} ==
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy numerowane tablicy, tzn. numerowane od {{Code|1}} bez przerw, ale z końcem, lub do pierwszej przerwy. Można wskazać, są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNumerowaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy numerowane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={"nazwa1", "nazwa2", "nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_numerowane_tablicy=parametry_modul["CzySąElementyNumerowaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo istnieją jakieś elementy numerowane tabeli {{Code|tabela}}.
== {{Code|p["CzySąParametryNienazwaneSzablonu"]}} ==
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane, tzn., niekoniecznie od {{Code|1}} mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowwa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNienazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania jest, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNienazwaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=nazwa1|5=nazwa2|8=nazwa3}}
</syntaxhighlight>
Funkcja ramki w szablonie zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nienazwane, a nienumerowane (nie zaczyna się od {{Code|1}}).
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNienazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
== {{Code|p["CzySąElementyNienazwaneTablicy"]}} ==
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}} są elementy nienazwane, tzn. nienazwane, niekoniecznie od {{Code|1}}, mogący być z przerwami, ale z końcem. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNienazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={[3]="nazwa1", [5]="nazwa2", [8]="nazwa3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane=parametry_modul["CzySąElementyNienazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ma on jakieś parametry nienazwane tablicy {{Code|tabela}}, a nienumerowane (nie zaczyna się od {{Code|1}}).
== {{Code|p["CzySąParametryNazwaneSzablonu"]}} ==
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametryNazwaneSzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametryNumerowaneSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|10=wartość2|15=wartość3}}
</syntaxhighlight>
Szablon zwróci wynik {{Code|tak}}, ponieważ ma on jakieś parametry nazwane.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyNazwaneTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
== {{Code|p["CzySąElementyNazwaneTablicy"]}} ==
Funkcja służy do wskazania, czy w tablicy {{Code|tabela}}, są elementy nazwane, tzn. niemający klucza w postaci liczby naturalnej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyNazwaneTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartośc3", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ są jakieś elementy nazwane tabeli {{Code|tabela}}.
== {{Code|p["CzySąParametrySzablonu"]}} ==
Funkcja służy do wskazania, czy w parametrach szablonu rodzica, w której jest uruchomiona ta funkcja w postaci ramki, są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąParametrySzablonu"] = function(frame)...end;
</syntaxhighlight>
Parametry ramki szablonu, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|niepuste}} - czy ma uwzględniać parametry tylko niepuste,
* {{Code|frame:getParent().args}} - tablica do rozważań przez funkcję biblioteczną.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzySąParametrySzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość4|2=nazwa4|6=nazwa6}}
</syntaxhighlight>
Funkcja ramki szablonu zwroci wynik {{Code|tak}}, ponieważ ma on jakieś parametry.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzySąElementyTablicy"]|p=Parametry}}}}, do obsługi ramki w szablonie, którą wywołuje się w wikikodzie.
== {{Code|p["CzySąElementyTablicy"]}} ==
Funkcja służy do wskazania, czy w parametrach tabeli {{Code|tabela}} są elementy nienazwane lub nazwane, tzn. elementy niemający klucza w postaci liczby naturalnej i łańcuchowej. Można wskazać, czy są takie te elementy niepuste za pomocą dodatkowego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzySąElementyTablicy"]=function(tabela,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy są elementy nienazwane lub nazwane, ewentualnie niepuste:
* {{Code|tabela}} - tabela do rozważań,
* {{Code|wliczać}} - czy ma uwzględniać parametry niepuste w tabeli {{Code|tabela}}.
Wywołanie przykładowej tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1", ["nazwa2"]="wartość2", ["nazwa3"]="wartość3", [2]="nazwa4", [6]="nazwa5", };
local parametry_modul=require("Module:Parametry");
local czy_sa_elementu_nienazwane_lub_nazwane=parametry_modul["CzySąElementyTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, ponieważ ta tabela {{Code|tabela}} ma jakieś elementy.
== {{Code|p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"]}} ==
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w parametrach szablonu rodzica, w której jest wywołana ta funkcja ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|niepuste}} - taki element nie może być pusty,
* {{Code|frame:getParent().args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie.
Przykładem wywołania, gdy rozważamy parametry niepuste szablonu, ewentualnie niepuste, jest:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu|niepuste=tak}}
</syntaxhighlight>
Szablon, w którym jest wywołane to przedstawienie, można napisać w wynikach poniżej.
Przykład pierwszy:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik {{Code|tak}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Przykład drugi:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane.
Przykład trzeci:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo są dwa elementy nienazwane, ale one nie zaczynają się od {{Code|1}}, dlatego wynik jest przede wszystkim taki.
Przykład czwarty:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=5|2=nazwa2|nazwa3=6}}
</syntaxhighlight>
Szablon zrzuci wynik równy wartości pustej {{Code|""}}, bo nie ma parametrów numerowanych zaczynających się od liczby {{Code|1}}.
Funkcja wykorzystuje funkcję: {{Code|{{sr|#p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]|p=Parametry}}}}, do obsługi tej funkcji ramki, którą wywołuje się w wikikodzie.
== {{Code|p["CzyCoNajwyżejJedenNumerowanyElementTablicy"]}} ==
Funkcja sprawdza, czy element numerowany jest od jedynki, i czy jest on jeden wśród parametrów nienazwanych w podanej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,wliczac)...end;
</syntaxhighlight>
Parametry funkcji, sprawdzające, czy jest jeden element numerowany funkcji:
* {{Code|args}} - tabela ramki szablonu rodzica, wśród, w której następuje to wyszukiwanie,
* {{Code|wliczac}} - taki element nie może być pusty.
Wywołanie przykładowej tej funkcji, pierwsze, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6,};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|true}}, bo liczba elementów numerowanych jest {{Code|1}}, i nie ma dalszych elementów nienazwanych.
Wywołanie przykładowej tej funkcji, drugie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [1]="nazwa2", ["nazwa3"]=6, [3]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, trzecie, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, [4]="nazwa4",};
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, ale, są dwa elementy nienazwane.
Wywołanie przykładowej tej funkcji, czwarte, jest:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]=5, [2]="nazwa2", ["nazwa3"]=6, };
local parametry_modul=require("Module:Parametry");
local czy_jest_co_najwyzej_jeden_element_numerowany=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](tabela,true);
</syntaxhighlight>
Funkcja zrzuci wynik równy wartości {{Code|false}}, bo nie ma pierwszego elementu numerowanego, tzn. dla parametru {{Code|tabela[1]}}, mimo, że jest jeden element nienazwany.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
my84lexcv2ht2q3octu6rdxdfrxqznb
Wikibooks:Moduły/Parametry/Tom IV
4
63970
553030
2026-08-23T22:26:59Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przeedstawione funkcje do kopiowania tabel. == {{Code|p["KopiujTabelęŁańcuchów"]}} == Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}},…”
553030
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przeedstawione funkcje do kopiowania tabel.
== {{Code|p["KopiujTabelęŁańcuchów"]}} ==
Szablon przyjmuje tabelę: {{Code|args}}, którego elementem jest: {{Code|args.tabela}}, która jest tą właściwą tabelę, na której operujemy. Tabela {{Code|args}} posiada składowe do zastępowania poszczególnych elementów w niej, a jeżeli nie ma dla niego składowych szczególnych, to rzeczywiście kopiujemy tabelę łańcuchów, w przeciwnym wypadku, ją modyfikujemy. Z tak uzyskanej tabeli wyodrębniamy pewne elementy, modyfikujemy je, lub po pewnych operacjach odejmujemy, i tworzymy nowa tabelę. A jeśli w niej uzyskiwanej, to do niego dodawjemy elementy przedrostkiem i przyrostkiem, a podstawie tego tworzymy nową tabelę {{Code|args2}}, która zwracana jest przez tę funkcję.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęŁańcuchów"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica, z główną tablicą, z elementami modyfikującymi elemenenty i je zmienione sprawdzające, a następnie dodające do nich przedrostki i przyrostki.
Składowymi nazwanymi tabeli: {{Code|args}}, którym koniecznym elementem jest {{Code|args.tabela}}, a dalsze są opcjonalne, ale tylko co najmniej jeden z nich musi być podany, co na podstawie, z której tworzymy nową tabelkę, a więc:
* {{Code|args.tabela}} - tabela, na której operujemy, na podstawie, z której tworzymy zwracaną tabelę {{Code|args2}},
* {{Code|args["wzór"][coś]}} lub {{Code|args["wzór wszystko"]}} - wzór wyszukiwania, czy element wskazywany przez niego, ma to,
* {{Code|args.podstawienie[coś]}} lub {{Code|args["podstawienie wszystko"]}} - podstawienie, dokonane po znalezieniu elementu w elemencie według powyższego zaraz wzoru, i go zastąpienie,
* {{Code|args["wzór 2"][coś]}} lub {{Code|args["wzór wszystko 2"]}} - wzór wyodrębnienia pewnej części, jeśli element to ma po ewentualnym podstawieniu, a jeśli tego nie ma, to zwracane jest {{Code|nil}}, wtedy z tego elementu tabeli, dla której uzyskaliśmy tę wartość, nie jest przetwarzana jako element nowej tabeli {{Code|args2}},
* {{Code|args.przedrostek[coś]}} lub {{Code|args["przedrostek wszystko"]}} - jeśli element istnieje wyszukany powyższym wzorem, to to jest przedrostek przed tym elementem,
* {{Code|args.przyrostek[coś]}} lub {{Code|args["przyrostek wszystko"]}} - jeśli element istnienie wyszukany powyższym wzorem, to to jest przyrostek po tym elemencie.
Element {{Code|coś}} jest to jakiś klucz elementu tabeli {{Code|args.tabela}}. W powyższych alternatywach jest sprawdzany najpierw pierwszy element alternatywny, czy istnieje, a potem drugi. Za pomocą tego modyfikujemy tę tabelę lub usuwamy poszczególne jego elementy, tworząc tabelę {{Code|args2}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
local args = { tabela = tabela, ["wzór wszystko"] = "%d+$", ["podstawienie wszystko"] = "_numer", ["wzór wszystko 2"] = "_numer$", ["przedrostek wszystko"] = "coś przed ", ["przyrostek wszystko"] = " coś po", };
local args2 = parametry_modul["KopiujTabelęŁańcuchów"](args);
mw.logObject(args2, "Uzyskana tabela:" );
</syntaxhighlight>
Uzyskaną tabelą jest w wyniku operacji według powyższego kodu, wyświetlaną przez funkcję {{Code|mw.logObject}} jest:
<syntaxhighlight lang="lua">
local args2={ [1] = "coś przed wartość_numer coś po", [2] = "coś przed wartość_numer coś po", ["nazwa1"] = "coś przed wartość_numer coś po", ["nazwa2"] = "coś przed wartość_numer coś po", };
</syntaxhighlight>
== {{Code|p["KopiujTabelęElementów"]}} ==
To jest nierekurencyjne kopiowanie tabeli {{Code|tabela}}, a jeżeli {{Code|wliczac_1{{=}}true}}, to klucze elementów nie mogą być puste lub wskazywać na wartość fałszywą, a jeśli {{Code|wliczac_2{{=}}true}}, to wartości tych elementów o tych kluczach nie mogą być puste lub wskazywać na wartość fałszywą. W takim przypadku wywoływana w takim bądź razem jest funkcja: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametrami funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul = require("Module:Parametry");
local tabela = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5". ["nazwa3"] = ""};
local tabela2 = parametry_modul["KopiujTabelęElementów"](tabela,true,true);
</syntaxhighlight>
Uzyskana tabela {{Code|tabela2}} jest w wyniku wywołania kodu, którą możemy podejrzeć przy pomocy funkcji: {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabela2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", };
</syntaxhighlight>
== {{Code|p["KopiujTabelęElementówBezTablicyKluczy"]}} ==
Funkcja kopiuje nierekurencyjnie elementy tabeli {{Code|tabelka}}, usuwając z niej elementy o kluczach wskazanych przez tabelę {{Code|tabelka2}}, którego elementy piszemy w postaci {{Code|{"klucz"] {{=}} "wartość"}}. Funkcją wyszukiwującą klucze w tabeli {{Code|tabelka2}} jest: {{Code|{{sr|#p.CzyJestTakiKluczTabeli|p=Parametry}}}}. Z tabeli można usunąć klucze, ewentualnie przy pomocy {{Code|wliczac_1{{=}}true}}, jeśli chodzi o klucze, i ewentualnie wartości {{Code|wliczac_2{{=}}true}}, a tutaj o wartości, o wartościach pustych lub fałszywych uzyskiwanej z funkcji: {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|tabelka2}} - tabela zbudowana przy pomocy ściśle określonych kluczy o dowolnych wartościach (wartości są nieistotne), za pomocą których usuwamy elementy tabeli {{Code|tabelka2}},
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykłady usuwania kluczy z tabeli o kluczach i wartościach, pustych lub fałszywych (określoną wartością {{Code|false}}):
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={ [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = ""};
local tabelka2={[2]=true,["nazwa2"]=false,};
local tabelka3=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](tabelka,tabelka2,true,true);
</syntaxhighlight>
Tabelą uzyskaną z wyników: {{Code|tabelka3}}, jest, którą możemy podejrzeć przy pomocy funkcji {{Code|mw.logObject}}:
<syntaxhighlight lang="lua">
local tabelka3={ [1] = "wartość1", ["nazwa1"] = "wartość3", };
</syntaxhighlight>
== {{Code|p["KopiujRekurencyjnieTabelęElementów"]}} ==
Funkcja dokładnie rekurencyjnie kopiuje tabelę {{Code|tabelka}}, pomijając ewentualnie elementy o kluczach, przy pomocy {{Code|wliczac_1{{=}}true}}, i o wartościach przy pomocy: {{Code|wliczac_2{{=}}true}}, przy użyciu funkcji.
Funkcja też kopiuje dokładnie tabele również z przyłączonymi metafunkcjami, ale ona musi mięc wtedy metodę: {{Code|__metatabelka.KopiujMetaTabela}}, bo w przeciwnym razie żadna metabela nie zostanie przekopiowana, wtedy kopiowanie będzie niedokładne. Dla tabel bez metatabel kopiowanie jest rekurencyjne i dokładne.
Przykładami metatabel z tą funkcją do kopiowania metatabel są: {{Code|{{sr|#p.MetaTabelkaParsowanieSzablonu|p=Szablonowe}}}} i {{Code|{{sr|#p.MetaTabelkaSzablonowe|p=Szablonowe/Potrzebne}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,wliczac_1,wliczac_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Parametry funkcji:
* {{Code|tabelka}} - tabela elementów o kluczach i ich wartościach, na której dokonujemy operacji,
* {{Code|wliczac_1}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych kluczy,
* {{Code|wliczac_2}} - jeśli {{Code|true}}, tabela {{Code|tabelka}} jest tworzona bez pustych lub fałszywych wartości o pewnych kluczach.
Przykładem kopiowania rekurencyjnego tabeli {{Code|tabelka}}, usuwając z niej jednocześnie klucze i wartości, puste lub fałszywe, jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", [""] = "wartość5", ["nazwa3"] = "",["nazwa4"] = { ["nazwa5"]=true, ["nazwa6"] = "", }, };
local tabelka2=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tabelka,true,true);
</syntaxhighlight>
Wynikiem jest dokładnie przekopiowana tabela {{Code|tabelka}} bez pewnych elementów:
<syntaxhighlight lang="lua">
local tabelka2 = { [1] = "wartość1", [2] = "wartość2", ["nazwa1"] = "wartość3", ["nazwa2"] = "wartość4", ["nazwa4"] = {["nazwa5"] = true, }, };
</syntaxhighlight>
Obiekt referencyjny {{Code|tabelka2}}, jest ona dokładną kopioną pierwotnej jej wersji, wskazuje na inny adres niż {{Code|tabelka}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1xb8o0hugacc5yvwq86up16lhvnh6z6
Wikibooks:Moduły/Parametry/Tom V
4
63971
553031
2026-08-23T22:30:04Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje do sprawdzania istnienia pewnych parametrów. == {{Code|p["NazwanyLiczbą"]}} == Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w s…”
553031
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje do sprawdzania istnienia pewnych parametrów.
== {{Code|p["NazwanyLiczbą"]}} ==
Wywołanie ramki {{Code|{{m|Parametry|NazwanyLiczbą}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nienazwany parametr, tzn. określony liczbą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyLiczbą"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyLiczbą|2}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|2=wartość|3=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo znalazł parametr nienazwany {{Code|2|, ale nie numerowany.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== {{Code|p["NazwanyCiągiem"]}} ==
Wywołanie ramki {{Code|{{m|Parametry|NazwanyCiągiem}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano taki nazwany parametr, tzn. określony łańcuchem znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwanyCiągiem"] = function (frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|NazwanyCiągiem|nazwa1}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość|nazwa2=wartość}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== {{Code|p.Nazwane}} ==
Wywołanie ramki {{Code|{{m|Parametry|Nazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nazwane parametry, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nazwane|nazwa1|nazwa2|nazwa3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry, tzn. o kluczach {{Code|nazwa1}} i {{Code|nazwa2}} posiadający wartości, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== {{Code|p.Nienazwane}} ==
Wywołanie ramki {{Code|{{m|Parametry|Nienazwane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie nienazwane parametry (oznaczone liczbami naturalnymi) o wartościach takich jak, tzn. określone łańcuchami znaków.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Nienazwane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Nienazwane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|3=wartość1|6=wartość2}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry nienazwane o wartościach takich, tzn. {{Code|wartość1}} i {{Code|wartość2}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Nienazwane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
== {{Code|p.Numerowane}} ==
Wywołanie ramki {{Code|{{m|Parametry|Numerowane}}}} umieszcza się w szablonie rodzicu, sprawdza, czy w szablonie podano takie numerowane parametry, tzn. określone łańcuchami znaków:
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Numerowane(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|Numerowane|wartość1|wartość2|wartość3}}
</syntaxhighlight>
Wywołanie szablonu z tą ramką jako dziecko:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|wartość2|wartość3}}
</syntaxhighlight>
Wtedy funkcja (ramka) w szablonie zwróci wartość {{Code|tak}}, bo w szablonie są dwa takie parametry numerowane (tzn. numerowane od jedynki bez przerw) o wartościach takich, tzn. {{Code|wartość2}} i {{Code|wartość3}}, które są podzbiorem z trzech wartości według funkcji ramki {{Code|{{m|Parametry|Numerowane}}}}.
Funkcje wywołuje się tylko w postaci ramki, a nie w skrypcie {{lpg|Lua}} w {{lpr|Scribunto}}, bo tam istnienie parametru sprawdza się innymi metodami.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2g8x41xoxe30rdrr9xaos0y030wkh2r
Wikibooks:Moduły/Parametry/Tom VI
4
63972
553032
2026-08-23T22:32:15Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje manipulowania formatami łańcuchów znakowych. == {{Code|p["Odstępy"]}} == === Odpowiednik szablonowy === Odpowiednik szablonowy {{s|Odstępy}} ma te same…”
553032
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje manipulowania formatami łańcuchów znakowych.
== {{Code|p["Odstępy"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}.
Przykładami wywołania funkcji:
Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}.
; Przykład pierwszy
{{Pre|{{s|Odstępy|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie.
----
; Przykład drugi
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją.
----
; Przykład trzeci
{{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak|
Oto jest łańcuch.
}}}}
; Wynik
{{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak|
Oto jest łańcuch.
}}}}
Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik.
=== Funkcja biblioteczna ===
Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["Odstępy"] = function(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|nazwa}} - określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha,
* {{Code|2}} lub {{Code|wewnątrz}} - czy ma również robić te same operacje, co powyżej domyślną, tylko że wewnątrz ciągu,
* {{Code|3}} lub {{Code|dolny-myślnik}} - czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki,
* {{Code|4}} lub {{Code|spacje}} - czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki.
Funkcja zwraca przekształcony ciąg powyższymi metodami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local nazwa2=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",};
local nazwa3=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",};
local nazwa4=parametry_modul["Odstępy"]{nazwa="
Oto jest łańcuch.
",
["wewnątrz"]="tak",["dolny-myślnik"]="tak",};
</syntaxhighlight>
Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości:
<syntaxhighlight lang="lua">
local nazwa2="Oto jest łańcuch.";
local nazwa3="Oto jest łańcuch.";
local nazwa4="Oto_jest_łańcuch.";
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
kf3xd9hgu27kp7y93qwetxoxm4x7hvr
Wikibooks:Moduły/Parametry/Tom VII
4
63973
553033
2026-08-23T22:34:29Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tu przedstawione funkcje dodawania lub usuwania elementu do tabeli zbioru. == {{Code|p.DodajElementDoZbioru}} == Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|…”
553033
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tu przedstawione funkcje dodawania lub usuwania elementu do tabeli zbioru.
== {{Code|p.DodajElementDoZbioru}} ==
Funkcja dodaje element do zbioru, czyli do tablicy numerowanej: {{Code|tabela}}, wartość: {{Code|wartość}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DodajElementDoZbioru(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów numerowanych,
* {{Code|wartosc}} - wartość, którą wsadzamy jako ostatni element do tej tablicy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={};
--- Tutaj zwraca true;
local tak1=parametry_modul.DodajElementDoZbioru(tabela,"wartość1");
--- Tutaj zwraca true;
local tak2=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
--- Tutaj zwraca false;
local tak3=parametry_modul.DodajElementDoZbioru(tabela,"wartość2");
</syntaxhighlight>
Elementami tej tabeli są:
<syntaxhighlight lang="lua">
local tabela={"wartość1","wartość2",};
</syntaxhighlight>
Funkcja zbiera tylko niepowtarzające się wartości, w tym wypadku zwraca wartość {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rqdb2kygxm2ko7hxk8mvuhia78idq0k
Wikibooks:Moduły/Parametry/Tom VIII
4
63974
553034
2026-08-23T22:36:58Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje do sprawdzania istnienia elementów tabeli. == {{Code|p.CzyJestTakiElementNumerowanyTabeli}} == Funkcja sprawdza, czy jest taki element numerowany. Definic…”
553034
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje do sprawdzania istnienia elementów tabeli.
== {{Code|p.CzyJestTakiElementNumerowanyTabeli}} ==
Funkcja sprawdza, czy jest taki element numerowany.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko numerowanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu numerowanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niemający przerw, zaczynający się o kluczu od jedynki, ale z końcem, lub do pierwszej przerwy, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi od jedynki bez przerw z końcem na końcu.
Przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={"wartość1","wartość2","wartość3",5,8,"wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
== {{Code|p.CzyJestTakiElementNienazwanyTabeli}} ==
Funkcja sprawdza, czy jest taki element nienazwany, niekoniecznie numerowany. Ta tabela może mieć przerwy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów, nie tylko nienazwwanych,
* {{Code|wartosc}} - parametr wartości, jaką ta tablica powinna posiadać w postaci elementu nienazwanego.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie, nienazwanych, dla której sprawdzamy, czy jakiś element jego o kluczu określonej liczbą naturalną, czy posiada podaną wartość {{Code|wartość}}.
Zaużmy, że tabelą naszą jest obiekt zdefiniowany z elementami numerowanymi niekoniecznie od jedynki mogący być z przerwami z końcem na końcu.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={[2]="wartość1",[5]="wartość2",[10]="wartość3",[80]=5,[90]=8,[100]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementNienazwanyTabeli(tabela,"wartość3");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
== {{Code|p.CzyJestTakiKluczTabeli}} ==
Funkcja sprawdza, czy jest taki element o danym kluczu o dowolnej wartości.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiKluczTabeli(tabela,klucz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} elementów, niekoniecznie nazwanych, dla której sprawdzamy, czy jakiś element jego o danym kluczy {{Code|klucz}}, o dowolnej wartości.
Zaużmy, że naszą tabelą jest tabela elementów nazwanych z kluczami i przydzielonymi im wartościom.
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiKluczTabeli(tabela,"nazwa5");
</syntaxhighlight>
Funkcja w przykładzie zwraca wartość {{Code|true}}.
== {{Code|p.CzyJestTakiElementTabeli}} ==
Funkcja sprawdza, czy jest taki element o danym kluczu {{Code|klucz}} i wartości {{Code|wartość}} dla elementów w danej tabeli.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela elementów z kluczami i ich wartościami,
* {{Code|klucz}} - klucz, jaką ta tabela musi posiadać,
* {{Code|wartość}} - wartość tego klucza, jaką ta tabela powinna posiadać.
Parametrami funkcji jest tabela {{Code|tabela}} o parametrach niekoniecznie nazwanych, ale on równie dobrze może składać się z elementów nienazwanych lub tylko numerowanych.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]=5,["nazwa5"]=8,["nazwa6"]="wartość4",};
local czy_tak=parametry_modul.CzyJestTakiElementTabeli(tabela,"nazwa5",8);
</syntaxhighlight>
Funkcja tutaj zwraca wartość {{Code|true}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
se35s7aw1dyi2jpqz5yb4tw7rltxwob
Wikibooks:Moduły/Parametry/Tom IX
4
63975
553035
2026-08-23T22:40:23Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje łączenia wielu tabel. == {{Code|p["ŁączDwieTabele"]}} == Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Par…”
553035
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje łączenia wielu tabel.
== {{Code|p["ŁączDwieTabele"]}} ==
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączDwieTabele"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}} i {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
</syntaxhighlight>
== {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} ==
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",};
</syntaxhighlight>
== {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} ==
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela1}}, {{Code|tabela2}} - tabele do połączenia w jedną tablicę.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
== {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} ==
Funkcja łączy dwie tabele przy pomocy funkcji: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
</syntaxhighlight>
== {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} ==
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",};
</syntaxhighlight>
== {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} ==
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",};
</syntaxhighlight>
== {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} ==
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
== {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} ==
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tabela1={"wartość1","wartość2","wartość3","wartość4",};
local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",};
local tabela3={"wartość10","wartość11","wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",};
</syntaxhighlight>
== {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} ==
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",};
local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",};
local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",};
</syntaxhighlight>
== {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} ==
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",};
</syntaxhighlight>
== {{Code|p["ŁączNumerowaneTabele"]}} ==
Funkcja wykorzystuje funkcję: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączNumerowaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={tabela1,tabela2,tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
</syntaxhighlight>
== {{Code|p["ŁączNienazwaneTabele"]}} ==
Funkcja wykorzystuje funkcję {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}.
Definicja skrótowa fukcji:
<syntaxhighlight lang="lua">
p["ŁączNienazwaneTabele"]=function(args)
local parametry_modul=require("Module:Parametry");
local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,};
return parametry_modul["ŁączTabele"](args,args2);
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów będących elementami.
Przykładem działania funkcji jest:
<syntaxhighlight lang="lua">
local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",};
local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",};
local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",};
local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,};
local parametry_modul=require("Module:Parametry");
local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args);
</syntaxhighlight>
Uzyskaną tabelą w wyniku wywołania tej funkcji jest:
<syntaxhighlight lang="lua">
local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",};
</syntaxhighlight>
== {{Code|p["ŁączTabele"]}} ==
Funkcja łączy tabele ogólnie nazwane, określone w tablicy {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ŁączTabele"] = function(args,args2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tabela elementów będących tabelami,
* {{Code|args2}} - tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone.
Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy.
Parametry (elementy) tabeli {{Code|args2}} są:
* {{Code|args2.CzyPairsTablic}} - jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane,
* {{Code|args2["CzyPairsElementówTablic"]}} - jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane,
* {{Code|args2.CzyNazwaneElementyTabel}} - jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę,
* {{Code|args2.CzyTylkoNazwaneElementyTabel}} - jeśli niepuste, łączy tylko nazwane elementy tabel,
* {{Code|args2.NazwijElementyNumerowane}} - jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic.
Przykładami wykorzystania tej funkcji są funkcje łączenia tabel zdefiniowane w funkcjach powyżej, tzn. zdefiniowane w:
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - laczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi,
* {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych,
* {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} - łączy tylko elementy nazwane tabel, tabel ponumerowanych.
Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane.
{{Hr}}
* {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} - łączy tabele ponumerowane,
* {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} - łączy tabele określone liczbami naturalnymi.
Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami.
{{Hr}}
Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rq78ty3g6209rtnaeoqjvao43f0x821
Wikibooks:Moduły/Parametry/Tom X
4
63976
553036
2026-08-23T22:42:25Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje dodawania lub usuwania elementów z tabeli o takich kluczach. == {{Code|p["UsuńElementyTabeli"]}} == Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, k…”
553036
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje dodawania lub usuwania elementów z tabeli o takich kluczach.
== {{Code|p["UsuńElementyTabeli"]}} ==
Funkcja w tabelce {{Code|tabelka_1}} usuwa elementy, którego klucze są w {{Code|tabelka_2}}, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_1}} - tabela elementów,
* {{Code|tabela_2}} - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabelka_koncowa=parametry_modul["UsuńElementyTabeli"](tabelka_1,tabelka_2);
</syntaxhighlight>
Stworzona w ten sposób tabelka {{Code|tabelka_koncowa}}, to ma taką referencję, co {{Code|tabelka_1}}, ale za to ma elementy, jako:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
Ta pierwotna tabela została zmodyfikowana przy pomocy tej funkcji według tego przykładu.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
tpe9va4qzlvwzi0afqsn8x14etr1yuq
Wikibooks:Moduły/Parametry/Tom XI
4
63977
553037
2026-08-23T22:44:14Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawwione funkcje tworzenia tabeli. == {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} == Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=…”
553037
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawwione funkcje tworzenia tabeli.
== {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} ==
Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu.
Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args[1]}} - tabela elementów,
* {{Code|args[2]}}, {{Code|args[3]}},... - tabele, co za pomocą ich kluczy są usuwane elementy z tej pierwszej.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",};
local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,};
local tabela_args={tabelka_1,tabelka_2,};
local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args);
</syntaxhighlight>
Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy:
<syntaxhighlight lang="lua">
local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",};
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fv4qpww1yrv342rfc5r5jjn3u2f6a1p
Wikibooks:Moduły/Parametry/Tom XII
4
63978
553038
2026-08-23T22:46:24Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje typu. == {{Code|p.TypeTable}} == Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrotowa funkcji…”
553038
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje typu.
== {{Code|p.TypeTable}} ==
Funkcja sprawdza, czy typem zmiennej jest tabela w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeTable(zmienna)
return (type(zmienna)=="table");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabelka={"wartość1","wartosc2",["nazwa1"]="wartość3",}
local czy_tak=parametry_modul.TypeTable(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== {{Code|p.TypeFunction}} ==
Funkcja sprawdza, czy typem zmiennej jest funkcja w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeFunction(zmienna)
return (type(zmienna)=="function");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local funkcja=function(frame)return true;end;
local czy_tak=parametry_modul.TypeFunction(funkcja);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== {{Code|p.TypeString}} ==
Funkcja sprawdza, czy typem zmiennej jest łańcuch znakowy w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeString(zmienna)
return (type(zmienna)=="string");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local str="wartość";
local czy_tak=parametry_modul.TypeString(tabelka);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== {{Code|p.TypeBoolean}} ==
Funkcja sprawdza, czy typem zmiennej jest typ logiczny w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeBoolean(zmienna)
return (type(zmienna)=="boolean");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_jest_tam=false;
local czy_tak=parametry_modul.TypeBoolean(czy_jest_tam);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== {{Code|p.TypeNumber}} ==
Funkcja sprawdza, czy typem zmiennej jest liczba w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNumber(zmienna)
return (type(zmienna)=="number");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local liczba=2;
local czy_tak=parametry_modul.TypeNumber(liczba);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
== {{Code|p.TypeNil}} ==
Funkcja sprawdza, czy typem zmiennej jest zmienna z przydzieloną wartością, której jest {{Code|nil}}, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TypeNil(zmienna)
return (type(zmienna)=="nil");
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zmienna}} - parametr, którego chcemy sprawdzić, czy pasuje do ściśle określonego typu według funkcji.
Przykłady użycia:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_nil=nil;
local czy_tak=parametry_modul.TypeNil(czy_nil);
-- Wartością zmiennej: czy_tak, jest: true;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
kxk849n6jjk4v58wor8xq82ih70gj88
Wikibooks:Moduły/Parametry/Tom XIII
4
63979
553039
2026-08-23T22:48:09Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|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 prawdy i fałszu W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, musz…”
553039
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|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 prawdy i fałszu
W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica.
W tej pierwszej funkcji jest wykorzystywana na druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jesy funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga.
Te funkcje rozwazane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy jest ciągiem pustym, a jeżeli jest to liczba, to czy jest nie równa {{Code|0}}, czy wartością logiczną jest jako {{Code|true}}, w przypadku tabel, czy jest niepustą tabelą, ale za to w funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, jeżeli tak, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie wartość {{Code|nil}}.
== {{Code|CzyTakSilnik}} ==
Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyTakSilnik(args,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|args}} - tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji,
* {{Code|funkcja}} - funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy.
Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek).
Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać.
Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil;
</syntaxhighlight>
Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}.
Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}}
</syntaxhighlight>
Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej.
Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"]{args={
[1]=" Wartość ",
[2]="",
["nazwa1"]="wartość1",
["nazwa2"]="wartość2",
[3]="wartość3",
[4]="wartość4",
["wyspecjalizowana"]="tak",
},
getParent=function()end,
};
</syntaxhighlight>
Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj.
== {{Code|p["CzyTakCiąg"]}} ==
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["CzyTakCiąg"]=function(...)...end;
</syntaxhighlight>
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul["CzyTakCiąg"](" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|nil}}.
== {{Code|p.CzyTak}} ==
W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.CzyTak=function(...)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|1}} lub {{Code|zmienna}} - sprawdzana zmienna, może być to funkcją,
* {{Code|2}} lub {{Code|parametry}} - parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją.
Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}
A w przypadku:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}}
</syntaxhighlight>
To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu.
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}}
</syntaxhighlight>
Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}.
Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" Wartość ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak(" ");
</syntaxhighlight>
Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów.
A teraz inny przykład:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local czy_tak=parametry_modul.CzyTak("");
</syntaxhighlight>
Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5j9lxehhg6lg1nbz305jig7y61qv9ub
Wikibooks:Moduły/Parametry/Tom XIV
4
63980
553040
2026-08-23T22:51:38Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoł…”
553040
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje parametrów.
== {{Code|p.PobierzFrameEwentualnieParent}} ==
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskanej element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
== {{Code|p.PobierzArgsParametry}} ==
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
== {{Code|p.PobierzParametryRamki}} ==
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ==
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
== {{Code|p.PobierzParametr}} ==
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pmthmfmi602fbxtr9v5np9qhnrk3u0z
553082
553040
2026-08-24T03:03:39Z
Persino
2851
/* {{Code|p.PobierzFrameEwentualnieParent}} */
553082
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje parametrów.
== {{Code|p.PobierzFrameEwentualnieParent}} ==
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
== {{Code|p.PobierzArgsParametry}} ==
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
== {{Code|p.PobierzParametryRamki}} ==
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju tabeli {{Code|frame}}. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych tabel (dokładnie, która tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ==
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
== {{Code|p.PobierzParametr}} ==
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
d6xa7hp2kssu4j253oiax99kmsdmiwm
553083
553082
2026-08-24T03:18:35Z
Persino
2851
/* {{Code|p.PobierzParametryRamki}} */
553083
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje parametrów.
== {{Code|p.PobierzFrameEwentualnieParent}} ==
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
== {{Code|p.PobierzArgsParametry}} ==
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
== {{Code|p.PobierzParametryRamki}} ==
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ==
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
== {{Code|p.PobierzParametr}} ==
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r0qwq1ueja4xrhili9umlzwzcy1y3i7
553084
553083
2026-08-24T03:21:21Z
Persino
2851
/* {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} */
553084
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje parametrów.
== {{Code|p.PobierzFrameEwentualnieParent}} ==
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
== {{Code|p.PobierzArgsParametry}} ==
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
== {{Code|p.PobierzParametryRamki}} ==
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ==
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
== {{Code|p.PobierzParametr}} ==
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rgb0vgqmossva71zwz0bc3ojzsviu8a
553085
553084
2026-08-24T03:23:08Z
Persino
2851
/* {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} */
553085
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje parametrów.
== {{Code|p.PobierzFrameEwentualnieParent}} ==
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
== {{Code|p.PobierzArgsParametry}} ==
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
== {{Code|p.PobierzParametryRamki}} ==
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ==
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
== {{Code|p.PobierzParametr}} ==
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą sie parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdy by do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np.z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
teevc11nnbx980tazmol0i4seiwxu08
553086
553085
2026-08-24T03:30:53Z
Persino
2851
/* {{Code|p.PobierzParametr}} */
553086
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje parametrów.
== {{Code|p.PobierzFrameEwentualnieParent}} ==
Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzFrameEwentualnieParent(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args;
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzFrameEwentualnieParent(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}.
== {{Code|p.PobierzArgsParametry}} ==
Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica.
W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy.
Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica transportu ramki,
* {{Code|czy_nie_tablica_jako_tablica}} - czy wartości nietablicowe umieszczać w jednoelemenowej tabeli.
Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy.
Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta.
Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej.
W ramce podajemy argumenty wraz z tym specjalnym parametrem:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
....
end;
</syntaxhighlight>
To wtedy w kodzie ściągane parametry ramki dziecka.
Tę funkcję można równie dobrze wykorzystać do zwykłych tabel:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(tabela);
</syntaxhighlight>
A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.:
<syntaxhighlight lang="lua">
--- Pierwsza możliwość;
local wartosc1=p["Nazwa funkcji"](frame);
-- Druga możliwość
local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
</syntaxhighlight>
Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}.
Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać:
<syntaxhighlight lang="lua">
local wartosc="wartość";
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
to wtedy definicję tej funkcji piszemy:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local wartosc=args[1];
end;
</syntaxhighlight>
lub równoważnie możemy zapisać:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
local wartosc=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]();
</syntaxhighlight>
wtedy definicja tej funkcji wygląda:
<syntaxhighlight lang="lua">
local p={};
function p["Nazwa funkcji"](frame)
local parametry_modul=require("Module:Parametry");
-- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów;
local args=parametry_modul.PobierzArgsParametry(frame);
end;
</syntaxhighlight>
Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
</syntaxhighlight>
Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli:
<syntaxhighlight lang="lua">
-- Pierwszy przypadek, gdy frame jest wartością nietablicową;
local parametry_modul=require("Module:Parametry");
...
-- Zwracana wartość: args, to nic innego niż: {frame,};
local args=parametry_modul.PobierzArgsParametry(frame,true);
...
-- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio;
local args=parametry_modul.PobierzArgsParametry(frame);
</syntaxhighlight>
== {{Code|p.PobierzParametryRamki}} ==
Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane.
Definicja skrótowa tej funkcji jest:
<syntaxhighlight lang="lua">
function p.PobierzParametryRamki(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy:
<syntaxhighlight lang="lua">
local p={};
local p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
...
end;
</syntaxhighlight>
Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}};
</syntaxhighlight>
W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji.
Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób:
<syntaxhighlight lang="lua">
local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",};
local wynik=p["Nazwa funkcji"]{tabela);
</syntaxhighlight>
też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach:
<syntaxhighlight lang="lua">
--- Zmienna: wartosc1, przyjmuje wartość: "wartość1";
local wartosc1=PobierzParametryRamki("nazwa1");
--- Zmienna: wartosc2, przyjmuje wartość: "wartość2";
local wartosc2=PobierzParametryRamki("nazwa2");
--- Zmienna: wartosc3, przyjmuje wartość: "wartość3";
local wartosc3=PobierzParametryRamki(1);
</syntaxhighlight>
W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest:
<syntaxhighlight lang="lua">
local wartosc="wartość";
--Zmienna: wartosc, nie jest w tym przypadku tablicą;
local wynik=p["Nazwa funkcji"](wartosc);
</syntaxhighlight>
Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym.
<syntaxhighlight lang="lua">
-- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem;
local wartosc1=PobierzParametryRamki();
-- Zmienna: wartość2, przyjmuje wartość: nil;
local wartosc2=PobierzParametryRamki();
</syntaxhighlight>
W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość.
Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
</syntaxhighlight>
Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)();
</syntaxhighlight>
Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu.
Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}.
A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1);
local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2);
local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3);
</syntaxhighlight>
Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}.
== {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} ==
Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej.
Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"](frame);
</syntaxhighlight>
a teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},};
</syntaxhighlight>
Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",};
</syntaxhighlight>
Albo te parametry wsadzając do funkcji:
<syntaxhighlight lang="lua">
local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3");
</syntaxhighlight>
Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}}
</syntaxhighlight>
A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
...
end;
</syntaxhighlight>
Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że:
<syntaxhighlight lang="lua">
args[1]="wartość1";
args[2]="wartość2";
args[3]="wartość3";
</syntaxhighlight>
Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej.
Na podstawie tego wiemy, jak działa funkcja ta z nagłówka.
Pisząc w inny sposób, można też wskazywać:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(...)
local tablica_prametrow_funkcji={...};
local parametry_modul=require("Module:Parametry");
local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji);
local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1);
local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2);
local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3);
end;
</syntaxhighlight>
Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów.
== {{Code|p.PobierzParametr}} ==
Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje.
Definicja skrótowa dunkcji:
<syntaxhighlight lang="lua">
function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame)
...
return function(nazwa)
return __pobierz_parametr_table_args(nazwa);
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu,
* {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} - parametry logiczne dodatkowe funkcji.
Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}.
Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry, tzn. pod warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}), czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości fałszywej tego pierwszego podanego parametru, mówi, że przy wartości {{Code|true}} tego parametru, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}.
Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje.
Funkcję pisze się według sposobu, którą się wywołuje według:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1);
local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2);
local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3);
</syntaxhighlight>
Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne.
Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa.
Weźmy ramkę, w której uruchamiamy funkcję ramki:
<syntaxhighlight lang="mediawiki">
{{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}}
</syntaxhighlight>
Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
...
end;
</syntaxhighlight>
Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak nie, to z: {{Code|pf.args}}.
Weźmy inny przypadek:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true);
...
end;
</syntaxhighlight>
Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}.
Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false);
...
end;
</syntaxhighlight>
To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}}.
W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki tablicę ramki tablicy transportu.
Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany:
<syntaxhighlight lang="lua">
local p={};
p["Nazwa funkcji"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
...
end;
</syntaxhighlight>
Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1rlkd7t6r0krb03z2id1o6kl4206ow9
Wikibooks:Moduły/Parametry/Tom XV
4
63981
553041
2026-08-23T22:53:51Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|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 wartości logicznej Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zw…”
553041
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|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 wartości logicznej
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
== {{Code|p.And}} ==
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
== {{Code|p.Or}} ==
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
== {{Code|p.Not}} ==
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie funkcja zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ib2gvwtyao71963g7vvnha7fpvrnef6
553081
553041
2026-08-24T02:59:47Z
Persino
2851
553081
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|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 wartości logicznej
Funkcje te wykorzystują funkcję: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}, jeżeli mamy ciąg składający się z samych znaków odstępu, to funkcja zwraca wartość odpowiadający wartości: {{Code|false}}, a dla innych wartości to działa jak: {{Code|true}}, dla instrukcji warunkowej: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}.
== {{Code|p.And}} ==
Funkcja działa jak operator logiczny operatorowy: {{Code|and}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli wszystkie z tych wartości są równe wartości {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.And(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1|wartość2|wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie wikikod z tą funkcją zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|And|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
== {{Code|p.Or}} ==
Funkcja działa operator logiczny operatorowy: {{Code|or}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartości parametrów składającą się, przynajmniej, któreś z nich, z nie znaków odstępu i niebędące ciągami pustymi, na wartość składający się z ciągowi niepustemu, czyli {{Code|tak}}, w w przeciwnym wypadku mamy wartość wyniku równą ciągowi pustemu.
Funkcja zamienia wartości każdego parametru na wartości logiczne: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i jeżeli z któreś z tych wartości jest {{Code|true}}, to funkcja zwraca {{Code|tak}}, w przeciwnym wypadku zwraca wartość równą ciągowi pustemu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Or(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|wartość1||wartość3}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzieten wikikod z tą funkcją zwróci wartość {{Code|tak}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Or|||}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|nie}}.
== {{Code|p.Not}} ==
Funkcja działa jak operator logiczny operatorowy: {{Code|not}}, w języku {{lpg|Lua}}.
Funkcja służy jedynie do uruchamiania w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, zamienia wartość składającą się z nie znaków odstępu i niebędący ciągiem pustym, na wartość składający się z ciągu pustego, i odwrotnie, czyli wartość pustą na wartość mający w sobie inne znaki niż odstępu.
Funkcja zamienia wartość pierwszego parametru na wartość logiczną: {{Code|true}}/{{Code|false}} (według funkcji: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}), i zamienia ją na przeciwność, wartości {{Code|true}} odpowiada {{Code|tak}}, a {{Code|false}} odpowiada wartości pustej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Not(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Przykład działania funkcji w ramce {{Lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikodzie w szablonie, bo ta funkcja służy do uruchamiania właśnie w szablonach, jest:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|tak}}|tak|nie}}
</syntaxhighlight>
W powyższym przykładzie wikikod z tą funkcją zwróci wartość {{Code|nie}}.
A w przykładzie z przeciwną zwracaną wartością:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Not|}}|tak|nie}}
</syntaxhighlight>
natomiast zostanie zwrócona wartość {{Code|tak}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bbh2n8rz54g28orvlobpznqynup8pry
Wikibooks:Moduły/Parametry/Tom XVI
4
63982
553042
2026-08-23T22:56:02Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje porównań. == {{Code|p.Mniejszy}} == Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logic…”
553042
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje porównań.
== {{Code|p.Mniejszy}} ==
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Funkcja wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Funkcja zrzuci wartość {{Code|nie}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
c9gngf9zfn8ovkam2oh1brmshdwvcda
553080
553042
2026-08-24T02:54:53Z
Persino
2851
/* {{Code|p.Mniejszy}} */
553080
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje porównań.
== {{Code|p.Mniejszy}} ==
Funkcja zastępuje parser logiczny: {{Code|{{s|#expr:coś|wtedy|przeciwnie}}}}, dla porównania dwóch wartości logicznych, działa on szybciej niż ten parser, bo on musi uwzględniać skomplikowaność wyrażeń matematycznych do policzenia, a nasza funkcja w języku: {{lpg|lua}} w {{lpr|Lua|Scribunto}}, już nie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Mniejszy(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Funkcja sprawdza, czy spełniona jest wartość mniejszości pierwszego parametru liczbowego:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5|3}}|tak|nie}}
</syntaxhighlight>
Powyższy wikikod z naszą funkcją, wtedy zrzuci wartość {{Code|nie}}, bo {{Code|5}} jest większe niż {{Code|3}}.
Można też sprawdzić, czy liczba jest ujemna, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|-5}}|tak|nie}}
</syntaxhighlight>
Powyższy wikikod z naszą funkcją, wtedy zrzuci wartość {{Code|tak}}.
Można też sprawdzić, czy liczba jest dodatnia, za pomocą wywołania:
<syntaxhighlight lang="mediawiki">
{{#if:{{#invoke:Parametry|Mniejszy|5}}|tak|nie}}
</syntaxhighlight>
Powyższy wikikod z naszą funkcją, wtedy zrzuci wartość {{Code|nie}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
epa57cshn62uxdnbk5o0d8j1gnojxb5
Wikibooks:Moduły/Parametry/Tom XVII
4
63984
553043
2026-08-23T22:58:00Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje mówiące, ile jest podanych elementów w szablonie według parametrów ramki. == {{Code|p.IlePodano}} == Funkcja sprawdza, ile jest podanych parametrów w…”
553043
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje mówiące, ile jest podanych elementów w szablonie według parametrów ramki.
== {{Code|p.IlePodano}} ==
Funkcja sprawdza, ile jest podanych parametrów w parametrach rodzica szablonu z parametrów nazwanych lub nienazwanych, ale traktowanych jak nazwane, podanych w dziecku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IlePodano(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
Wywołanie szablonu, w której jest wywołana funkcja: {{Code|{{m|Parametry|IlePodano}}}}, jako z parametrami, i nie tylko, podanymi w ramce tej funkcji w tym szablonie:
<syntaxhighlight lang="mediawiki">
{{Nazwa szablonu|nazwa1=wartość1|nazwa2=wartość2|nazwa3=wartość3|wartość4|wartość5}}
</syntaxhighlight>
To wtedy wywołanie w nim naszej funkcji bibliotecznej w postaci ramki wygląda, jako:
<syntaxhighlight lang="mediawiki">
{{#invoke:Parametry|IlePodano|nazwa1|nazwa3|2|nazwa4|5}}
</syntaxhighlight>
Funkcja zwróci wartość {{Code|3}}, a nie {{Code|5}}, bo trzy tylko parametry znaleziono w ramce wywołania szablonu, a parametr: {{Code|nazwa4}} i {{Code|5}}, tam wcale nie występują.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9iiszmmfxsvsh7xv6yt31bea25s3xae
Wikibooks:Moduły/Parametry/Tom XVIII
4
63985
553044
2026-08-23T23:00:02Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} ; Metafunkcje i metatabele Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje. == {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} == Jest to zd…”
553044
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
; Metafunkcje i metatabele
Rozdział przedstawia metatabele i w niej zdefiniowane metafunkcje.
== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter}} ==
Jest to zdefiniowana metatabelka, którego definicja i przyporządkowanie innej normalnej tablicy, wygląda:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter=parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter;
local tablica_normalna={["nazwa1"]="wartosc1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",};
setmetatable(tablica_normalna,metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
</syntaxhighlight>
== {{Code|p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index}} ==
Jeżeli przyporządkujemy wartości {{Code|tablica_normalna}} metatabelkę z metafunkcjami, w tym przypadku metafunkcji {{Code|.__index(t,klucz)}}, wtedy możemy pisać wywołanie:
<syntaxhighlight lang="lua">
local wartosc1=tablica_normalna["NAZWA1"];
</syntaxhighlight>
Uzyskaną wartością jest: {{Code|wartość1}}, bo wartość: {{Code|NAZWA1}} jest zamieniana na małe litery w tym wywołaniu, ale powyżej podano wartość {{Code|nazwa1}} w tablicy {{Code|tablica_normalna}}, wtedy obie wartości są sobie równe, a więc uzyskamy taki wynik.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4jh3cagkcqub001k80eom942zaksmvp
Wikibooks:Moduły/Parametry/Tom XIX
4
63986
553045
2026-08-23T23:01:57Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} ; Iteratory Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}},…”
553045
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
; Iteratory
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
== {{Code|p.IteratorPoNumerowanychElementachTablicy}} ==
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} ==
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6iekyumecg3osyzu2s7v8zslokalmxi
553079
553045
2026-08-24T02:49:35Z
Persino
2851
553079
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
; Iteratory
Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej.
== {{Code|p.IteratorPoNumerowanychElementachTablicy}} ==
Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tej tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorPoNumerowanychElementachTablicy(t)
...
return function()
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|t}} - tablica, po której iterujemy po elemenetach numerowanych.
Przykład działania iteratora jest:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={1,2,3,4,5,6,7,8,9,10,};
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica);
for name, value in iter do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
== {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} ==
Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja)
...
return function(tablica,klucz)
...
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela}} - tabela, po której iterujemy,
* {{Code|funkcja}} - funkcja sortująca.
Parametry funkcji zwracanej:
* {{Code|tablica}} - tabela operowana,
* {{Code|klucz}} - klucz, dzięki któremu szukamy następny element.
Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",};
local __metatabelka={};
__metatabelka.__pairs=function(t)
local funkcja_sortujaca=nil;
local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca);
return __next,t,nil;
end;
setmetatable(tabela,__metatabelka);
for name,value in pairs(tabela) do
mw.log("Klucz:",klucz,"Wartość:",value);
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
mw3zowsypg2n18ek0a8zhk8v1qlu4en
Wikibooks:Moduły/Parametry/Tom XX
4
63987
553046
2026-08-23T23:04:28Z
Persino
2851
Utworzono nową stronę „<noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje wartości minimalnej i maksymalnej. == {{Code|p.Max}} == Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych. === Odpowi…”
553046
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje wartości minimalnej i maksymalnej.
== {{Code|p.Max}} ==
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
=== Odpowiednik szablonowy ===
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
=== Funkcja biblioteczna ===
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
== {{Code|p.Min}} ==
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
=== Odpowiednik szablonowy ===
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby w liczbę, ale też liczby w różnych jednostkach bezwzględnych z mianem na końcu na zamianę w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
=== Funkcja biblioteczna ===
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu ramki, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2bsvlnxirnam2nchbfmfe5i5vnayxx3
553078
553046
2026-08-24T02:44:43Z
Persino
2851
553078
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Są tutaj przedstawione funkcje wartości minimalnej i maksymalnej.
== {{Code|p.Max}} ==
Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych.
=== Odpowiednik szablonowy ===
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio.
=== Funkcja biblioteczna ===
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Max(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Max|5|3}}
</syntaxhighlight>
Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local maksimum=parametry_modul.Max(5,3);
</syntaxhighlight>
Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
== {{Code|p.Min}} ==
Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych.
=== Odpowiednik szablonowy ===
Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu:
* {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}}
Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}.
* {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}}
Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo.
Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio.
=== Funkcja biblioteczna ===
Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.Min(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu.
W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste:
<syntaxhighlight lang="lua">
{{#invoke:Parametry|Min|5|3}}
</syntaxhighlight>
Wynikiem tego jest minimum równą: {{Code|3}}.
Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb.
Ten kod piszemy:
<syntaxhighlight lang="lua">
local parametry_modul=require("Module:Parametry");
local minimum=parametry_modul.Min(5,3);
</syntaxhighlight>
Wartością minimalną z dwóch liczb jest: {{Code|3}}.
Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5rrurs279fusylxgdxocs6agm6p2xca